2013-04-10 2 views
2

PHP에서 search_array 함수를 사용하여 0 색인을 검색하고이를 true로 평가할 수없는 것 같습니다.php array_search 0 index

예를 들어,이 코드를 고려해

$test=array(100, 101, 102, 103); 

if($key=array_search(100,$test)){ 

    echo $key; 

} 

else{ 

    echo "Not found"; 

} 

바늘 '100'은 건초 더미에서 발견 나는 검색의 성공 여부를 평가할 때 키가 0 지금까지 너무 좋은 반환, 그러나한다 또는 반환 값이 0, false와 같기 때문에 실패하지 않습니다!

if($key=(array_search(103,$test)!== false)){ 

} 

그래서 내가 성공적으로 검색 할 수있는 방법 '! =='

PHP 매뉴얼 대신, 1 또는 0을 반환하여 제안하지만, 너무 키 (배열 인덱스)를 수행하여 반환되지 않습니다 배열, 0 인덱스에서 일치하는 항목을 찾아서 true로 평가합니까?

+0

당신이 [BIG RED BOX]를 참조하지 않았나요 (http://php.net/array_search#refsect1-function.array-search-returnvalues)? 그러한 질문을하기 전에 설명서를 읽고 언어를 이해하도록하십시오. – cmbuckley

답변

26

문서에 명시 적으로 언급되어 있습니다. 당신은 사용할 필요가 === 또는 !== :

$key = array_search(...); 

if ($key !== false) ... 

그렇지 않으면, $key는 부울 테스트 evaluates to false0이다. 두 번째 예 블록

+2

당신은 물론'if (($ key = array_search (...))! == false)'를 사용할 수 있습니다. –

+0

이 글에서 여러 스레드를 읽고, 매뉴얼을 계속 읽었지만 대답을 찾을 수 없습니다. 내 코드의 잘못된 부분에 '! =='이 있다고 생각합니다. 지금 일하고 있습니다 - 고마워요! – user2056238

0
if(($key = array_search(103,$test)) !== false){ 

} 
4

조건부 는 !== 운영자에게 실행 순서의 우선 순위를 부여, 당신은 그래도 반대를하고 싶어.

if (($key = array_search(100,$test)) !== false) { 

!== 괄호 필요하게 ==보다 높은 우선 순위를 갖는다.

+0

참고 : 여기에서 가장 정확한 내용입니다. 내가 끔찍한, 늙고, 순진하고, 지금 삭제 된 대답에서 upvotes를 전송할 수 있다면. – Sammitch

1
$key = array_search($what, $array); 
if($key !== false and $array[$key] == $what) { 
return true; 
} 

더 보안의

0
$test=array(100, 101, 102, 103); 

if (($key = array_search(100,$test)) === false) { 
    echo "Not found"; 
} else{ 
    echo $key; 
}