Что возвращает array_search(), если ничего не найдено?
Мне нужна следующая логика:
$found = array_search($needle, $haystack);
if($found){
//do stuff
} else {
//do different stuff
}
Что возвращает array_search(), если ничего не найдено?
Мне нужна следующая логика:
$found = array_search($needle, $haystack);
if($found){
//do stuff
} else {
//do different stuff
}
Цитата справочной страницы array_search()
:
Возвращает ключ для иглы, если он найденный в массиве
FALSE
иначе.
Это означает, что вы должны использовать что-то вроде:
$found = array_search($needle, $haystack);
if ($found !== false) {
// do stuff
// when found
} else {
// do different stuff
// when not found
}
Примечание. Я использовал оператор !==
, который выполняет сортировку по типу; см. Операторы сравнения, Тип Juggling и Преобразование в boolean для получения более подробной информации об этом; -)
если вы просто проверяете, существует ли значение, in_array - это путь.
Согласно официальной документации на http://php.net/manual/en/function.array-search.php:
Предупреждение Эта функция может возвращать Boolean FALSE, но также может возвращать небулевое значение, которое оценивается как ЛОЖЬ. Пожалуйста, прочитайте раздел о Булевы для получения дополнительной информации. Используйте оператор === для тестирования возвращаемое значение этой функции.
См. этот пример:
$foundKey = array_search(12345, $myArray);
if(!isset($foundKey)){
// If $myArray is null, then $foundKey will be null too.
// Do something when both $myArray and $foundKey are null.
} elseif ($foundKey===false) {
// $myArray is not null, but 12345 was not found in the $myArray array.
}else{
// 12345 was found in the $myArray array.
}
Из документов:
Ищет стог сена для иглы и возвращает ключ, если он найден в массиве, FALSE в противном случае.
array_search вернет FALSE, если ничего не найдено. Если он найдет иглу, он вернет ключ массива для иглы.
Дополнительная информация: http://php.net/manual/en/function.array-search.php
Нужно быть осторожным, чтобы различать found, index 0
и not found
, для этого используйте тест !== false
. Пример:
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$i = array_search('red', $array);
echo ($i !== false) ? $i : -1; // 1
$i = array_search('blue', $array);
echo ($i !== false) ? $i : -1; // 0
$i = array_search('blueee', $array);
echo ($i !== false) ? $i : -1; // -1 i.e. not found
?>