Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

Используйте функцию 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(), – это возвращение одного значения, но не обязательно первого по порядку.

См. также

О том, как проверять наличие элемента в массиве; документацию по функции array_search() на странице http://www.php.net/array-search для более сложного поиска в массиве с помощью регулярных выражений смотрите информацию по функции preg_replace() на странице http://www.php.net/preg-replace

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ