PHP 프로그래밍에서, 특히 루프 구조 (예 : foreach 또는 loops )를 처리 할 때 값이 정수인지 여부를 결정하는 것이 매우 일반적입니다. is_int ()는 변수가 유형 정수 ( int )의 값인지를 결정하는 내장 함수입니다. 함수 자체는 간단하지만 루프에 사용될 때 쉽게 간과되는 함정, 특히 배열 키, 양식 입력 또는 외부 데이터를 처리 할 때 종종 쉽게 간과되는 함정이 동반됩니다.
이 기사는 일반적인 오해 및 실제 예를 포함하여 정수를 판단하기 위해 루프에서 IS_INT ()를 올바르게 사용하는 방법에 대해 깊이 설명합니다.
is_int(mixed $value): bool
이 함수는 변수를 매개 변수로 사용하고 변수의 유형이 정수 (int) 인 경우 true를 반환하고 그렇지 않으면 False를 반환합니다.
예:
$value = 10;
if (is_int($value)) {
echo "정수입니다";
} else {
echo "不정수입니다";
}
산출:
정수입니다
실제 응용 분야에서는 종종 Foreach 에 트래버스 어레이를 사용합니다. 현재 배열 키에서 정수 판단이 이루어질 수 있습니다. 일반적인 시나리오는 혼합 어레이를 처리하거나 인덱스 어레이를 연관 배열과 구별하는 것입니다.
$data = [
0 => '사과',
1 => '바나나',
'a' => '주황색',
'2' => '배'
];
foreach ($data as $key => $value) {
if (is_int($key)) {
echo "$key 정수입니다索引:$value\n";
} else {
echo "$key 예, 비 integer 색인:$value\n";
}
}
산출:
0 정수입니다索引:사과
1 정수입니다索引:바나나
a 예, 비 integer 색인:주황색
2 예, 비 integer 색인:배
참고 : 키 '2'는 정수처럼 보이지만 문자열 유형이며 is_int ()에 의해 정수로 판단되지 않습니다. 이것이 is_int ()를 사용할 때의 핵심 사항입니다.
문자열 형성 숫자 (예 : '2' 와 같은)가 정수로 간주된다고 판단하려면 intval ()을 사용하여 ctype_digit () 또는 is_numeric ()을 사용해야합니다.
$key = '2';
if (is_numeric($key) && (string)(int)$key === (string)$key) {
echo "$key 정수로 간주 될 수 있습니다";
}
그러나 변수가 엄격한 정수 값인지 확인하려면 is_int ()가 가장 적합하고 안전한 선택입니다.
for 루프 자체는 종종 정수 인덱스에 의존하지만 때로는 루프의 동작을 결정하기 위해 외부에 전달 된 데이터에 대한 판단이 필요합니다.
$limit = $_GET['limit'] ?? 10;
if (!is_int($limit)) {
$limit = (int)$limit; // 케이스
}
for ($i = 0; $i < $limit; $i++) {
echo "1. $i 두 번째 루프\n";
}
양식 또는 URL 매개 변수를 통해 $ 한계를 전달하면 기본값은 문자열 유형입니다. is_int ()를 직접 사용하는 것은 판단에 실패하므로 판단하기 전에 유형 변환을 수행하거나 filter_var () 와 함께 사용해야합니다.
$limit = $_GET['limit'] ?? 10;
if (filter_var($limit, FILTER_VALIDATE_INT) !== false) {
$limit = (int)$limit;
} else {
$limit = 10;
}
이 방법은 더 안전하고 사용자 입력 검증에 더 적합합니다.
예를 들어 방문 :
https://gitbox.net/index.php?limit=5
루프는 5 회 실행됩니다.
is_int ()는 int 유형 값에 대해서만 true를 반환하고 '5' 와 같은 문자열 번호는 false를 반환합니다.
배열 키가 Foreach 의 정수인지 판단 할 때 조심하십시오. 숫자 문자열은 정수 키로 처리되지 않습니다.
사용자 입력은 일반적으로 문자열 유형이며 유형이 일관되도록 Filter_var () 또는 수동 변환을 사용하는 것이 좋습니다.
정수처럼 보이는 문자열을 판단하려면 ctype_digit () 또는 기타 대안을 사용할 수도 있습니다.
루프 구조에서 is_int ()를 사용하는 것은 일반적인 유형 안전 점검 방법이지만 강력한 PHP 프로그램을 작성하려면 제한 사항 및 사용 시나리오를 이해해야합니다.