PHP에서 유형 변환은 특히 변수를 엄격하게 입력 해야하는 경우 일반적인 작업입니다. settype () 는 PHP가 변수를 지정된 유형으로 변환하기 위해 제공하는 내장 기능입니다. settype ()는 정수 변환에 부유 포인트 숫자를 다룰 때 간단 해 보이지만 그 뒤에주의를 기울일 몇 가지 세부 사항이 있습니다.
settype () 의 기본 구문은 다음과 같습니다.
bool settype(mixed &$var, string $type)
이 함수는 변수의 참조 $ var 와 변환 할 대상 유형 $ 유형 (예 : "정수", "문자열"등의 두 가지 매개 변수를 취합니다. 함수는 부울 값을 반환하여 유형이 성공적으로 설정되어 있는지를 나타냅니다.
예를 들어, 부동 소수점 번호를 정수로 변환합니다.
$number = 42.99;
settype($number, "integer");
echo $number; // 산출:42
Float에서 Integer로 변환을 수행 할 때 PHP는 작용하여 반올림하는 대신 분수 부분을 자릅니다 . 이것은 매우 중요합니다.
예를 들어:
$float = 9.99;
settype($float, "integer");
echo $float; // 산출:9
소수점 이후의 부품이 무엇이든 settype ()를 사용하는 한 직접 폐기됩니다.
settype ()는 유형 변환에 사용될 수 있지만 실제 개발에서는 유사한 기능이 (int) 또는 intval () 입니다.
$float = 7.89;
$int1 = (int) $float;
$int2 = intval($float);
echo $int1; // 산출:7
echo $int2; // 산출:7
이러한 방법은 SETTYPE () 의 전환 결과와 동일하며, 의미와 작문의 관점에서 다르다는 점을 제외하고는 동작이 있습니다.
settype ()는 지점에서 원래 변수를 수정하는 것 입니다.
(int) 새 값을 반환합니다
intval ()은 더 많은 유형 (예 : 문자열)을 처리하고 추가 매개 변수를 제공 할 수 있습니다.
데이터 정확도 손실 : 부동 소수점 번호를 정수로 변환 할 때 소수 부분이 직접 잘려 나서 예상 결과가 실제 결과와 일치하지 않을 수 있습니다.
오버 플로 문제 : PHP의 정수는 범위 제한 (64 비트 시스템에서 -9223372036854775808 ~ 922372036854775807)을 가지고 있습니다.
재무 계산에 적합하지 않음 : 금액과 관련된 비즈니스를 다루거나 고정밀 소수점 운영이 필요한 경우 settype () 또는 정수 변환을 사용하여 일반적으로 안전하지 않으며 BCMATH 또는 GMP와 같은 고정밀 라이브러리를 고려해야합니다.
사용자가 가격 분야를 제출한다고 가정하고 어떤 종류의 청구 논리에 대해 정수 부분을 취하고 싶다고 가정 해 봅시다.
$price = $_POST['price']; // 사용자 입력 일 수 있습니다 "199.95"
if (is_numeric($price)) {
$price = (float) $price;
settype($price, "integer");
// 지금 $price 정수입니다 199,추가 처리에 사용할 수 있습니다
}
안전상의 이유로 IS_NUMERIC ()를 사용하여 입력이 법적 번호인지 확인하십시오.
예를 들어 URL 매개 변수를 처리 할 때 변환하려는 경우 다음과 같습니다.
https://gitbox.net/process.php?value=12.75
당신은 이것을 할 수 있습니다 :
$value = $_GET['value'];
if (is_numeric($value)) {
$value = (float) $value;
settype($value, "integer");
echo "정수 가치는입니다:" . $value;
}
악의적이거나 잘못된 입력으로 인한 문제를 피하기 위해 항상 유형 검사를 수행해야합니다.
settype ()를 사용하여 부동 소수점 번호를 정수로 변환하기 위해 Settype ()를 사용하여 PHP의 직접적이고 효율적인 방법이지만, 반올림, 유형 수정 등을 이해하기보다는 잘 이해되어야하는 "트랩"도 있습니다. 동작 및 적용 가능한 시나리오 이해보다 안정적이고 예측 가능한 PHP 프로그램을 작성하는 데 도움이 될 수 있습니다. 보다 복잡하거나 더 높은 정밀 요구 사항의 경우 더 고급 데이터 처리 방법을 고려하는 것이 더 나은 선택이 될 것입니다.