#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 в противном случае.