2014-10-17 3 views
1

내가 PHP의 array_search 기능에 대한 뭔가 흥미로운 것을 발견하고 누군가가이 문제를 해결하는 방법을 말해 줄 수 있는지 궁금 해서요 :PHP array_search : 키 == 0을 false와 어떻게 구별합니까?

그것은 기능 키를 반환하는 값이 배열에 발견되었을 때 그 docs 말한다, 그렇지 않으면 false입니다.

$arr = array(0 => "red", 1 => "blue", ...); 

및 array_search 사용하여 빨간색 값을 찾아 다음 키 0이 반환됩니다

문제는 당신과 같은 배열이있는 경우이다.

그러나 문제는 배열의 일부 요소가 있는지 여부를 찾기 위해 함수의 결과를 사용하는 경우 값이 0 (키 0이 실제로 발견 된 요소이므로 키 0)을 반환하면, 함수가 false를 반환 할 때와 마찬가지로 PHP에서도 동일하게 취급됩니다. 환언 :

if (array_search("red", $arr) == false) 

경우와 동일 :

if (array_search("red", $arr) == 0) 

한 경우, 소자가 발견 될 수없고 두 번째 경우에서, 엘리먼트가 아마이었던 키 더니 제외 0.

제 질문은이 문제의 해결책입니다. PHP manual에서

+6

신원 비교를 사용하십시오 :'==='. – lafor

+0

좋아요! 고마워. 이 질문을 답으로 게시하시는 것이 좋습니다. – user18490

+2

공유 한 링크에 경고 상자가 있습니다. 읽어. – HamZa

답변

2

:

이 함수는 논리 FALSE를 반환하지만 FALSE로 평가 비 부울 값을 반환 할 수있다. 자세한 내용은 부울을 참조하십시오. 이 함수의 반환 값 을 테스트하려면 === 연산자을 사용하십시오.

+0

FM에서 인용 한 RTFM은 도움이되지 않습니다. –

관련 문제