Array search: примеры (PHP)

Использование array_search для поиска в массивах PHP
Раздел: Работа с массивами
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false

Функция array_search() в PHP выполняет поиск заданного значения в массиве и возвращает первый соответствующий ключ, если значение найдено. Основное применение — поиск позиции элемента в ассоциативном или индексированном массиве.

Аргументы функции
  • $needle (обязательный): Искомое значение.
  • $haystack (обязательный): Массив, в котором выполняется поиск.
  • $strict (опциональный): Если установлен в true, функция выполняет строгое сравнение (с учетом типов данных). По умолчанию — false.
Базовые примеры использования
Поиск в индексированном массиве
<?php
$array = [10, 20, 30, 40];
echo array_search(30, $array);
?>
2
Поиск в ассоциативном массиве
<?php
$array = ['a' => 'apple', 'b' => 'banana'];
echo array_search('banana', $array);
?>
b
Строгий поиск
<?php
$array = ['1', 2, 3];
var_dump(array_search(1, $array, true));
?>
bool(false)
Результат при отсутствии значения
<?php
$array = [5, 10, 15];
var_dump(array_search(20, $array));
?>
bool(false)
Похожие функции в PHP
  • in_array() — проверяет, существует ли значение в массиве, возвращает true или false. Используется, когда не требуется ключ.
  • array_key_exists() — проверяет наличие ключа в массиве. Применяется для поиска по индексам.
  • isset() — определяет, установлен ли ключ и не равен ли null. Работает быстрее для проверки ключей.
  • array_keys() с фильтром — возвращает все ключи для заданного значения. Полезно для поиска всех вхождений.
Типичные ошибки
Сравнение без учета типов
<?php
$array = ['0', '1', '2'];
var_dump(array_search(0, $array));
?>
int(0)

Значение 0 находит строку '0' при нестрогом сравнении.

Использование результата как логического значения
<?php
$array = [0, 1, 2];
if (array_search(0, $array)) {
    echo 'Найдено';
}
?>
(ничего не выводится)

Ключ 0 интерпретируется как false. Следует использовать !== false.

Изменения в PHP 8
  • В PHP 8.0 функция теперь возвращает null, если значение не найдено, при приведении к строке вызывает предупреждение. Ранее возвращалось false.
  • Улучшены сообщения об ошибках при передаче неверного типа аргумента.
Расширенные примеры
Поиск в многомерном массиве
Пример php
<?php
$users = [
    ['id' => 1, 'name' => 'John'],
    ['id' => 2, 'name' => 'Jane']
];
$key = array_search('Jane', array_column($users, 'name'));
echo $key;
?>
1
Поиск всех вхождений
Пример php
<?php
$array = ['a', 'b', 'a', 'c'];
$keys = array_keys($array, 'a');
print_r($keys);
?>
Array
(
    [0] => 0
    [1] => 2
)
Строгий поиск с объектами
Пример php
<?php
class Item {
    public $id;
    public function __construct($id) {
        $this->id = $id;
    }
}
$obj1 = new Item(1);
$obj2 = new Item(1);
$array = [$obj1, $obj2];
var_dump(array_search($obj2, $array, true));
?>
int(1)
Поиск с callback-функцией через array_filter
Пример php
<?php
$array = [5, 12, 8, 20];
$key = array_search(true, array_map(function($val) {
    return $val > 10;
}, $array));
echo $key;
?>
1
Аналоги в других языках

Array search в Python

arr = ['apple', 'banana', 'cherry']
try:
    index = arr.index('banana')
except ValueError:
    index = None
print(index)
1

Array search в Javascript

const arr = ['apple', 'banana', 'cherry'];
const index = arr.indexOf('banana');
console.log(index);
1

Array search в MySQL

SELECT FIND_IN_SET('banana', 'apple,banana,cherry') as position;
2

Основное отличие PHP-функции — возможность строгого сравнения и работа с ассоциативными массивами.

PHP array_search function comments

En
Array search Searches the array for a given value and returns the first corresponding key if successful