2012-04-24 2 views
0

Когда я хочу проверить, находится ли что-то в массиве и вернуть ключ, я использую функцию array_search().PHP - array_search() не работает === true, но не включен! == false?

Почему это, когда я сравниваю функцию, чтобы она была в точности равна true (=== true), она возвращает false, а когда я сравниваю ее, чтобы она не была точно равна false (! == false), она возвращает true?

<?php 
    if(array_search($value, $array) === true) 
    { 
     // Fails 
    } 

    if(array_search($value, $array) !== false) 
    { 
     // Succeeds 
    } 
?> 

Заранее спасибо.

+0

Dont поблагодарить в ответе. Примите его ответ ... – Starx

ответ

8

array_search возвращает вам иглу, если совпадение найдено. он возвращает false только тогда, когда совпадение не найдено. Вот почему в вашем случае работает только противоположное.

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

+0

Ах, теперь это имеет смысл. Спасибо Хасану. – MisterBla

+0

Используйте 'in_array' вместо –

0

array_search() не возвращается.

Если возвращается только false, если он не может найти что-либо, в противном случае он вернет ключ согласованного элемента.

Согласно manual

array_search - поиск в массиве заданного значения и возвращает соответствующий ключ в случае успешного ....

Возвращает ключ для иглы, если он найден в массиве, FALSE в противном случае.

+0

По @Hasan Хана, он действительно возвращается FALSE – danneth

+0

Он может вернуть ложные – allen213

+0

Thats лучше теперь вы редактировали – allen213

0

Это не удастся, потому что если вызов является успешным, он возвращает ключ, не верный.

возвращается ложь, если оно не найдено, так === ложь нормально

из руководства:

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

Смежные вопросы