2013-08-30 2 views
3

SQL 결과 열에서 INT를 검색하여 생성 된 1에서 14까지의 숫자가 포함 된 일반 배열이 있습니다.PHP : array_search returns null

다른 쿼리를 사용하여 다른 INT를 반환합니다.

내 INT에서이 배열을 찾고 있습니다.

$key = array_search("$roomNb", $freeRooms); 

그러나이 키를 에코하려고하면 아무 것도 나타나지 않습니다. 그것은 비어 있습니다. 내가 루프를 사용하여 $ freeRooms 에코 경우

내가 얻을 : 나는 $ roomNb 에코 경우

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
14 

은 내가 아무것도받지 못했습니다 왜 내가 이해할 수없는

5 

를 얻을 수 반환. 나는 4의 열쇠를 기대해야 하는가? 무엇이 이것을 일으킬 수 있습니까? 배열은 항상 연속 된 숫자를 포함하는 것입니다, 당신이 뭔가
$value = $freeRooms[$roomNb] 

처럼 어떻게 array_search가 실행에 개인적으로 익숙하다고 말하고 것, 두 번째 SQL 호출이 그 숫자 중 하나를 반환하는지 확인할 수 있다고 가정

+4

echo --use 'var_dump ($ roomNb, $ freeRooms)'를 사용하지 마십시오. 바늘이나 건초 더미에 여분의 공간이나 다른 성격이 있음을 기꺼이 확신합니다. 일반적으로'var_dump'는 모든 코드 문제를 해결할 수 있습니다 :-) – cmbuckley

+3

@Itay 따옴표는 아무런 차이가 없습니다 - array_search는 기본적으로 비 엄격합니다. (배열이'string ("5")'이고 $ roomNb가'int (5)'이면 기술적으로 사실이 아닙니다.이 경우 * 차이가 있습니다 ...) – cmbuckley

+0

방금 ​​터미널에서 시나리오를 복제했으며 배열에 값을 저장할 때 캐스팅 (int)을 시도해보십시오. –

답변

1

대부분의 경우 $key처럼 보일 것이다 가정하는 것은 아무것도으로 나타납니다 반향 전송 false입니다. 바늘이

Null 당신이 array_search에 전달할 매개 변수가 유효하지 않은 경우 반환 전용

를 찾을 수 없을 때 대신 당신은 array_search에서 반환 $key

False의 가치를 결정하는 var_dump를 사용해야합니다

http://php.net/manual/en/function.array-search.php

http://writecodeonline.com/php/을 사용하여이 코드를 테스트하십시오 :

echo false; 
echo null; 
var_dump(false); 
var_dump(null); 

$code = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); 
$roomNb = 5; 

var_dump(array_search("$roomNb", $code)); 

정상적으로 작동해야합니다. echo은 아무 것도 출력하지 않습니다. var_dump이 항목을 출력합니다. 그리고 키는 4에 있습니다.

0

당신이 당신의 자신을 쓰고 싶다 경우, 그러나, 나는 그것이이

function IndexOf($searchValue,$array) 
{ 
    $i = 0; 
    for($i = 0; $i < count($array); $i++) 
     if($array[$i] == $searchValue) 
      return $i; 
} 
+0

배열에 인접한 숫자가 없습니다 : 0이 아닌 1부터 시작하여 13을 건너 뜁니다. – ChicagoRedSox