поиск по массиву php 0 индекс [закрыт]


Похоже, что вы не можете использовать функцию search_array в PHP для поиска индекса 0 И оценки его как истинного.

Рассмотрим этот код, например:

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

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

     echo $key;

}

else{

     echo "Not found";

} 

Игла "100" найдена в стоге сена, и ключ возвращается как 0. Пока все хорошо, но затем, когда я оцениваю, был ли поиск успешным или нет, он завершается неудачей, потому что возвращаемое значение равно 0, равно false!

Руководство по php предлагает использовать '!==', но при этом ключ (индекс массива) не возвращается, вместо этого возвращается либо 1, либо 0:

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

}

Итак, как я могу успешно выполнить поиск по массиву, найти совпадение в индексе 0 и оценить его как истинное?

Author: meagar, 2013-04-10

5 answers

Это явно указано в документах. Вам нужно использовать === или !==:

$key = array_search(...);

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

В противном случае, когда $key равно 0, что равно false при тестировании как логическое значение.

 27
Author: meagar, 2018-01-04 12:48:02

Условное условие во втором блоке примера дает приоритет порядка выполнения оператору !==, хотя вы хотите сделать обратное.

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

!== имеет более высокий приоритет, чем ==, что делает скобки необходимыми.

 4
Author: Explosion Pills, 2017-12-06 19:58:30
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) {
 return true;
}

Это более безопасно

 1
Author: Andrej Bestuzhev, 2013-04-10 19:17:43
if(($key = array_search(103,$test)) !== false){

}
 0
Author: Peter Kiss, 2013-04-10 19:15:18
$test=array(100, 101, 102, 103);

if (($key = array_search(100,$test)) === false) {
    echo "Not found";
} else{
    echo $key;
} 
 0
Author: rorra, 2013-04-11 00:16:26