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