Проверить наличие элемента в массиве

Проверить наличие элемента в массиве можно через функцию in_array(), которая возвращает «true» или «false».

$array = ['PHP', 'MySQL'];

if (in_array('PHP', $array)) {
    echo 'Элемент «PHP» найден';
}

Вернуть позицию (ключ) массива

Получить позицию элемента в массиве можно через функцию array_search(), которая возвращает ключ найденного элемента, или «false», если элемент не найден.

$array = [
    90234 => 'PHP',
    90421 => 'MySQL'
];

$lang_id = array_search('PHP', $array); // 90234
if ($lang_id !== false) {
    // выполнение кода с $lang_id
}

Функция array_search() возвращает позицию первого найденного элемента.

$array = [
    90234 => 'PHP',
    90421 => 'MySQL',
    91423 => 'PHP'
];

$lang_id = array_search('PHP', $array); // 90234

Число «0» в in_array()

Если будет идти поиск числа «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); // Элемент найден