PHP의 in_array() 및 array_search() 함수: 이상한 동작 해결
PHP 함수 in_array() 및 array_search()는 특이한 동작을 나타냅니다. 배열의 값을 확인하는 데 사용되는 경우. 이 수수께끼 같은 문제는 배열에 다양한 유형의 요소가 포함될 때 발생합니다.
예:
$arr = [TRUE, "some string", "something else"]; $result = in_array("test", $arr); var_dump($result); // Output: bool(true) $result = array_search("test", $arr); var_dump($result); // Output: int(0)
놀랍지 않나요? 두 함수 모두 true를 반환하여 "test"가 분명히 배열에 포함되어 있지 않더라도 배열에 있음을 나타냅니다. 이 동작은 이러한 함수에서 사용되는 기본 비교 메커니즘에서 비롯됩니다.
엄격한 비교와 느슨한 비교:
기본적으로 in_array() 및 array_search()는 느슨한 비교를 사용합니다. (==)는 비교되는 값의 유형이 달라도 true로 평가됩니다. 이 예에서는 배열의 TRUE 요소가 자동으로 문자열로 변환되어 TRUE == "test"가 true로 평가됩니다.
해결책: 엄격한 비교 시행
이러한 예상치 못한 동작을 방지하려면 이러한 함수의 선택적 세 번째 매개변수를 true로 설정하여 엄격한 비교(===)를 지정해야 합니다. 이렇게 하면 함수가 비교할 때 요소의 값과 유형을 모두 확인하도록 하여 보다 정확한 결과를 보장합니다.
$result = in_array("test", $arr, true); var_dump($result); // Output: bool(false) $result = array_search("test", $arr, true); var_dump($result); // Output: int(-1)
이 수정된 예에서는 함수에 지시된 대로 올바른 결과를 얻습니다. 엄격한 비교를 사용하십시오. "test"는 배열에서 찾을 수 없으며 반환된 값은 이를 반영합니다.
위 내용은 PHP의 `in_array()` 및 `array_search()`가 때때로 예상치 못한 결과를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!