PHP 개발에서는 종종 변수가 배열인지 여부를 결정해야합니다. is_array () 함수는 가장 일반적으로 사용되는 도구 중 하나입니다. 간단 해 보이지만 실제로 트랩을 숨 깁니다. 이 기사는 IS_ARRAY () 사용, 일반적인 오해 및 트랩을 피하는 방법에 대한 심층 분석을 수행합니다.
is_array ()는 다음 구문이있는 내장 기능입니다.
is_array(mixed $value): bool
변수를 매개 변수로 수신하며 변수가 배열 유형 인 경우 true를 반환합니다. 그렇지 않으면 False .
예:
$data = [1, 2, 3];
if (is_array($data)) {
echo "이것은 배열입니다";
} else {
echo "이것은 배열이 아닙니다";
}
산출:
이것은 배열입니다
일부 개발자는 구조가 배열과 유사한 한 is_array ()에 의해 배열로 판단 될 수 있지만 PHP는 배열과 같은 문자열, 객체 등을 배열로 자동 처리하지 않습니다.
Error example:
$data = '{"a":1,"b":2}'; // JSON 끈
if (is_array($data)) {
echo "이것은 배열입니다";
}
$ data는 문자열 유형이기 때문에이 코드는 "배열입니다"를 출력하지 않습니다.
해결책:
$data = json_decode('{"a":1,"b":2}', true); // 두 번째 매개 변수가 설정됩니다 true,연관 배열을 반환합니다
if (is_array($data)) {
echo "이것은 배열입니다";
}
빈 배열도 배열입니다.
$data = [];
if (is_array($data)) {
echo "여전히 배열";
}
많은 사람들이 "빈 배열"을 "유효하지 않은 데이터"로 잘못 판단하여 다음 오류 코드를 작성하는 경향이 있습니다.
if ($data && is_array($data)) {
// ...
}
$ data가 빈 배열 인 경우 위의 판단은 거짓 이므로 프로그램이 논리적 블록에 들어 가지 않습니다. 올바른 방법은 먼저 유형을 판단한 다음 비어 있는지 확인하는 것입니다.
if (is_array($data) && !empty($data)) {
// ...
}
구성 파일을 읽을 때 먼저 프로그램이 충돌하지 않도록 배열인지 여부를 결정합니다.
$config = include 'https://gitbox.net/config.php';
if (!is_array($config)) {
throw new Exception("잘못된 구성 파일 형식!");
}
양식에 배열 필드가 있으면 항상 유형 판단을하는 것이 좋습니다.
$tags = $_POST['tags'] ?? [];
if (is_array($tags)) {
foreach ($tags as $tag) {
echo htmlspecialchars($tag);
}
}
현대 PHP에서 유형 선언을 사용하는 것은 더 우아한 방법입니다.
function processData(array $items) {
foreach ($items as $item) {
// 처리 로직
}
}
이것은 수동으로 is_array ()를 호출하는 빈도를 줄일뿐만 아니라 코드의 견고성을 향상시킵니다.
IS_ARRAY () 는 간단한 기능이지만 잘못 사용하면 프로그램 논리 편차 또는 오류가 발생할 수 있습니다. 우리는 :
소스와 예상 변수 유형을 명확하게 알기 위해;
먼저 JSON과 같은 구조 데이터를 구문 분석합니다.
빈 배열의 적절한 처리를 수행하십시오.
가능하면 런타임 확인 대신 유형 선언을 사용하십시오.
is_array () 의 작동 방식을 진정으로 이해함으로써보다 강력하고 유지 관리 가능한 PHP 코드를 작성할 수 있습니다.