[PHP]: Что возвращает array_search(), если ничего не найдено?

Что возвращает array_search(), если ничего не найдено?

Мне нужна следующая логика:

$found = array_search($needle, $haystack);

if($found){
  //do stuff
} else {
  //do different stuff
}

Ответ 1

Цитата справочной страницы array_search():

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


Это означает, что вы должны использовать что-то вроде:

$found = array_search($needle, $haystack);

if ($found !== false) {
    // do stuff
    // when found
} else {
    // do different stuff
    // when not found
}

Примечание. Я использовал оператор !==, который выполняет сортировку по типу; см. Операторы сравнения, Тип Juggling и Преобразование в boolean для получения более подробной информации об этом; -)

Ответ 2

если вы просто проверяете, существует ли значение, in_array - это путь.

Ответ 3

Согласно официальной документации на 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.
}

Ответ 4

Из документов:

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

Ответ 5

array_search вернет FALSE, если ничего не найдено. Если он найдет иглу, он вернет ключ массива для иглы.

Дополнительная информация: http://php.net/manual/en/function.array-search.php

Ответ 6

Нужно быть осторожным, чтобы различать 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
?>