Php-индекс позиции

У меня есть массив, который выглядит так:

$fruit = array('apple','orange','grape');

Как я могу найти индекс определенного элемента в указанном выше массиве? (Например, значение "оранжевый" )

Ответ 1

Попробуйте array_search.

Из первого примера в руководстве:

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

Слово предостережения

При сравнении результата обязательно проверяйте значение false с помощью оператора ===.

Поскольку массивы в PHP основаны на 0, если элемент, который вы ищете, является первым элементом в массиве, будет возвращено значение 0.

В то время как 0 - действительный результат, это также значение фальшивки, означающее следующее:

<?php
    $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');   

    $key = array_search('blue',$array);

    if($key == false) {
        throw new Exception('Element not found');
    }
?>

Это связано с тем, что оператор == проверяет равенство (путем манипуляции с типом), а оператор === проверяет идентификатор.

Ответ 2

помните, что если вы считаете, что ваш элемент поиска можно найти более одного раза, вы должны использовать array_keys(), поскольку он будет возвращает ключи для всех совпадающих значений, а не только первый соответствующий ключ как array_search().

С уважением.