поиск по массиву 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 и оценить его как истинное?
5 answers
Это явно указано в документах. Вам нужно использовать ===
или !==
:
$key = array_search(...);
if ($key !== false) ...
В противном случае, когда $key
равно 0
, что равно false
при тестировании как логическое значение.
Условное условие во втором блоке примера дает приоритет порядка выполнения оператору !==
, хотя вы хотите сделать обратное.
if (($key = array_search(100,$test)) !== false) {
!==
имеет более высокий приоритет, чем ==
, что делает скобки необходимыми.
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) {
return true;
}
Это более безопасно
if(($key = array_search(103,$test)) !== false){
}
$test=array(100, 101, 102, 103);
if (($key = array_search(100,$test)) === false) {
echo "Not found";
} else{
echo $key;
}