Определение позиции элемента в массиве

Задача
Необходимо узнать, присутствует ли элемент в массиве, и если да, то в какой позиции он находится.

Решение
Используйте функцию array_search(). Она возвращает ключ обнаруженного элемента или значение false:

$position = array_search($array, $value);
if ($position !== false) {
//элемент массива $array в позиции $position имеет значение $value
}

Обсуждение
Используйте функцию in_array() для установления наличия в массиве определенного значения; используйте функцию array_search() для определения местоположения этого значения. Однако поскольку функция array_search() довольно изящно обрабатывает ситуации, когда значение не найдено, то вместо функции in_array() лучше использовать функцию array_search(). Разница в скорости работы незначительная, а дополнительная информация может оказаться полезной:

$favorite_foods = array(1 => 'artichokes', 'bread', 'cauliflower',
'deviled eggs');
$food = 'cauliflower';
$position = array_search($food, $favorite_foods);
if ($position !== false) {
echo "My #$position favorite food is $food";
} else {echo "Blech! I hate $food!";
}

Используйте оператор !== для сравнения со значением false, поскольку если обнаруженная строка находится на нулевой позиции, то оператор if преобразует его в логическое значение false, что явно не то, что ожидалось.

Если значение встречается в массиве несколько раз, то единственное, что гарантирует функция array_search(), – это возвращение одного значения, но не обязательно первого по порядку.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы