is_int () 함수는 변수가 정수 유형인지 확인하는 데 사용됩니다. 변수가 정수 인 경우 true를 반환하십시오. 그렇지 않으면 거짓 . PHP에서 정수는 42 또는 -10 과 같은 분수 부품이없는 숫자입니다.
var_dump(is_int(42)); // true
var_dump(is_int('42')); // false
var_dump(is_int(42.0)); // false
위의 예에서, is_int ()는 올바르게 작동하며, 42는 정수로 인식되는 반면, 문자열 '42' 나 부동 소수점 번호 42.0 은 정수로 간주되지 않습니다.
PHP에서는 종종 입력으로 숫자 문자열 (예 : '42' )을 만나고 정수인지 알려줍니다. 이 시점에서 is_int () 를 판단하기 위해 문자열을 판단하면 is_int ()가 숫자 형식의 문자열이 아닌 실제 정수에 대해서만 true를 반환하기 때문에 오류가 발생합니다.
var_dump(is_int('42')); // false
var_dump(is_int('0')); // false
var_dump(is_int('123abc')); // false
'42'가 정수처럼 보이더라도 실제로 문자열이므로 is_int ()는 false를 반환합니다.
PHP는 일부 유형을 다른 유형으로 자동 변환합니다. 예를 들어, 숫자 문자열에서 산술 작업을 수행 할 때 PHP는 정수로 변환합니다. 그러나 이것은 문자열 자체가 정수 유형이라는 것을 의미하지는 않습니다.
$var = '42';
echo $var + 1; // 43,정수로 자동 변환하고 계산합니다
그러나 IS_INT ()를 사용하여 확인하면 IS_INT () 가 정수로 변환 될 수 있는지 여부가 아니라 변수 유형을 확인하기 때문에 결과는 여전히 거짓 입니다.
또 다른 일반적인 함정은 숫자를 포함하는 문자열을 입력으로 사용하는 것입니다. 실수로 정수로 고려합니다. 예를 들어, '42' 및 '42' (공백이있는 문자열)은 정수 유형이 아닙니다.
var_dump(is_int('42')); // false
var_dump(is_int(' 42 ')); // false
'42'가 숫자 문자열이더라도 정수 유형이 아닌 문자열 유형입니다. 이 불일치는 프로그램에서 논리적 오류를 유발할 수 있습니다.
목표가 정수인지 확인하는 것이 아니라 문자열이 숫자를 나타내는 지 확인하는 경우 IS_NUMERIC () 함수가 더 나은 선택 일 수 있습니다. 변수가 숫자이거나 숫자 문자열 인 경우 is_numeric ()은 true를 반환합니다.
var_dump(is_numeric('42')); // true
var_dump(is_numeric('42.5')); // true
var_dump(is_numeric('0')); // true
var_dump(is_numeric('abc')); // false
IS_NUMERIC ()를 사용하면 숫자 문자열을 처리 할 때, 특히 사용자 입력 또는 외부 데이터를 판단 할 필요가있을 때 IS_INT () 의 제한을 피할 수 있습니다.
문자열을 정수로 안전하게 변환 할 수 있는지 확인 해야하는 경우, 문자열을 정수로 변환하거나 정규 표현식과 함께 엄격한 점검을 수행하는 intval () 함수를 사용하는 것을 고려하십시오.
$var = '42';
if (intval($var) == $var) {
echo "$var 정수로 변환 할 수있는 문자열입니다.";
} else {
echo "$var 유효한 정수가 아닙니다";
}
또는:
$var = '42';
if (preg_match('/^\d+$/', $var)) {
echo "$var 전체 숫자 문자열입니다";
} else {
echo "$var 不전체 숫자 문자열입니다";
}
이 방법은 숫자 문자열을 처리하기 위해 is_int ()에 직접 의존성을 피할 수 있습니다.