Проверить наличие элемента в массиве
Проверить наличие элемента в массиве можно через функцию in_array()
, которая возвращает «true» или «false».
$array = ['PHP', 'MySQL']; if (in_array('PHP', $array)) { echo 'Элемент «PHP» найден'; }
Вернуть позицию (ключ) массива
Получить позицию элемента в массиве можно через функцию array_keys()
, которая возвращает ключи найденного элемента, или пустой массив, если элемент не найден.
$array = [ 90234 => 'PHP', 90421 => 'MySQL' ]; $lang_id = array_keys($array, 'PHP'); // array(90234)
Также есть функция array_search()
, которая работает как пример выше, только возвращает позицию первого найденного элемента.
$array = [ 90234 => 'PHP', 90421 => 'MySQL', 91423 => 'PHP' ]; $lang_id = array_search('PHP', $array); // 90234
Число «0» в in_array()
Некорректная работа in_array()
, если в массиве есть число «0» была исправлена в PHP 8.0. Текст ниже актуален для сайтов, которые используют PHP 7.4 и ниже.
Если будет идти поиск числа «0», то функция in_array()
всегда будет возвращать «true» (т.е. элемент найден).
// пример in_array(), когда в массиве есть «0» $array = ['PHP', 'MySQL', 0]; in_array('PHP', $array); // Элемент найден in_array('Python', $array); // Элемент найден in_array('Ruby', $array); // Элемент найден
Функция in_array()
проверяет каждый элемент массива, сравнивая их с переданным параметром. На каждом шаге параметр преобразуется в тип данных текущего элемента массива. И когда она дойдёт до «0», строка преобразуется в число и будет равняться «0», а число «0» есть в массиве. Поэтому если в массиве есть число ноль и идёт поиск строки, то in_array()
всегда будет возвращать «true».
В этой ситуации для функции in_array()
рекомендуется добавлять третий параметр true
, который будет также проверять тип данных.
$array = ['PHP', 'MySQL', 0]; // с параметром «true» in_array('PHP', $array, true); // Элемент найден in_array('Ruby', $array, true); // Элемент не найден in_array('0', $array, true); // Элемент не найден in_array(0, $array, true); // Элемент найден
Поддержать автора