2011-01-22 1 views
2

Я не нахожу, что может быть проблемой в моей программе.Проблема с массивом Поиск в PHP

Я имею массив как этот

$arr = array("1", "urgent", "4", "low", "15", "avg"); 

Когда я ищу этот массив с помощью

$key = array_search("4", $arr);// Working 

Сво дает мне индекс этого элемента;

Но когда я ищу «1», он не дает мне никаких указателей.

$key = array_search("4", $arr); // Not working here - for searching "1" 

В чем может быть проблема.

Спасибо

+0

Возможно, вы захотите исправить этот второй пример. Кроме того, что * * это дает вам? Как вы определяете, что это «не работает»? – deceze

+0

Возможный дубликат [Error With array_search] (http://stackoverflow.com/questions/3600597/error-with-array-search) – meagar

+2

Существует так много дубликатов, * плюс * [документация] (http: // php .net/manual/en/function.array-search.php) явно охватывает этот случай. С огромным красным полем. – meagar

ответ

5

http://ideone.com/e1n3r делает ваш код отлично работает. Он возвращает ключ == 0, который является ключом, где хранится «1».

Чтобы получить разницу между 0 и false вы должны использовать === оператора или его вопреки !==:

$arr = array("1", "urgent", "4", "low", "15", "avg"); 

$key1 = array_search("1", $arr); 
var_dump($key1 === false); // false (value exists) 
var_dump($key1 !== false); // true (value exists) 

$key21 = array_search("21", $arr); 
var_dump($key21 === false); // true (value does not exist) 
var_dump($key21 !== false); // false (value does not exist) 
0

array_search возвращать значение ключа массива.

$arr = array("1", "urgent", "4", "low", "15", "avg"); 
    $key = array_search("4", $arr); 
    // give output is 2 which is key value 
    $key = array_search("1", $arr); 
    //give output is 0 which is key value 
0

Помните, что 0 оценивается в FALSE в PHP.

так ..

if($index = array_search("1",$arr)) { 
    //will actually evaluate to false 
} 

В случае, если вы используете это так и думаю, что это не работает, потому что условно технически не удается, значение оценивается как FALSE.

0

Я думаю, вы используете $key по-прежнему. $key = 0, и теперь, если вы сделаете логическую оценку, она будет действовать как ложная. Вы должны использовать что-то вроде if($key >= 0) или if(is_int($key))