PHP in_array() 및 array_search()의 동작 이해
PHP의 in_array() 및 array_search() 함수는 다음과 같은 경우 예기치 않은 동작을 나타낼 수 있습니다. 부울 값을 포함하는 배열을 처리합니다. 이러한 불일치를 해결하려면 이러한 함수의 고유 기능을 이해하는 것이 중요합니다.
두 함수 모두 선택적 세 번째 매개변수인 $strict가 있으며 기본값은 FALSE입니다. $strict가 FALSE로 설정되면 이러한 함수는 느슨한 비교(==)를 사용하여 값을 평가합니다. 즉, 유형에 관계없이 값이 동일한지 여부만 확인합니다.
예를 들어 제공된 배열에서
$arr = [TRUE, "some string", "something else"];
in_array("test", $arr)를 호출하면 배열에 "test"가 없더라도 TRUE를 반환합니다. 이는 TRUE가 "test"를 포함하여 "비어 있지 않은 모든 문자열"과 대략 동일하기 때문에 발생합니다.
마찬가지로 array_search("test", $arr)는 0을 반환하여 "test"가 다음 위치에 있음을 나타냅니다. 인덱스 0. 이는 기본적으로 TRUE와 "비어 있지 않은 문자열"이 동일한 것으로 간주되기 때문입니다.
정확한 비교를 보장하려면 $strict를 다음으로 설정해야 합니다. TRUE - 함수가 엄격한 비교(===)를 사용하도록 합니다. 엄격한 비교는 변수의 값과 유형을 모두 평가합니다. 따라서 $strict가 TRUE로 설정된 경우:
in_array("test", $arr, true); // Returns false array_search("test", $arr, true); // Returns -1
결론적으로 in_array() 및 array_search()의 기본 동작은 부울 값을 처리할 때 예상치 못한 결과를 초래할 수 있습니다. $strict 매개변수를 TRUE로 설정하면 엄격한 비교를 적용하여 함수가 정확한 결과를 위해 변수의 값과 유형을 모두 평가하도록 할 수 있습니다.
위 내용은 PHP의 `in_array()` 및 `array_search()` 함수는 부울 값 및 `$strict` 매개변수와 함께 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!