php индекс элемента

#php #arrays #indexing

#php #массивы #индексирование

Вопрос:

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

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

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

Ответ №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');
    }
?>
  

Это происходит потому, что == оператор проверяет равенство (путем подстановки типов), в то время как === оператор проверяет идентичность.

Комментарии:

1. Я думаю, что выполнение if (in_array(. bit должно защитить меня от проблемы, которую вы отметили после «будьте осторожны»

2. В коде небольшая ошибка, массив не указан. Это должно быть array_search('blue', $array) .

Ответ №2:

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

С уважением.

Ответ №3:

Вы должны использовать array_search.

Смотрите здесь http://www.php.net/manual/en/function .array-search.php

Комментарии:

1. Возвращаемые значения Возвращает TRUE, если в массиве найдена игла, FALSE в противном случае.