Проверить наличие элемента в массиве
Проверить наличие элемента в массиве можно через функцию in_array()
, которая возвращает «true» или «false».
$languages = ['PHP', 'Python', 'Ruby', 'Go'];
if (in_array('PHP', $languages)) {
echo 'Элемент «PHP» найден';
}
Функция in_array()
проверяет наличие только одного элемента в массиве. Если надо проверить наличие одного из нескольких элементов, то можно выполнить код ниже:
$languages = ['PHP', 'Python', 'Ruby', 'Go'];
$find = ['PHP', 'Python', 'Rust']; // элементы, которые надо проверить наличие в массиве
if (!empty(array_intersect($find, $languages)) {
// код, если один из элементов найден
}
Вернуть позицию (ключ) массива
Получить позицию элемента в массиве можно через функцию 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); // Элемент найден
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта