главная :: основы PHP
Поиск элементов массива
Поиск элементов относится к числу важнейших операций с массивами. В РНР существует несколько стандартных функций, позволяющих
легко находить в массиве нужные ключи и значения.
in_array( )
Функция i n_array ( ) проверяет, присутствует ли в массиве заданный элемент. Если поиск окажется удачным, функция возвращает TRUE, в
противном случае возвращается FALSE. Синтаксис функции in_array( ):
bool in_array(mixed элемент, array массив)
Эта функция особенно удобна тем, что вам не приходится в цикле перебирать весь массив в поисках нужного элемента. В следующем примере
функция in_array( ) ищет элемент "Russian" в массиве $languages:
$languages = array("English", "Gaelic", "Spanish"):
$exists = in_array("Russian", $languages); // $exists присваивается FALSE
$exists = in_array("English", $languages): // $exists присваивается TRUE
Функция in_array( ) часто встречается в управляющих конструкциях, когда ее возвращаемое значение (TRUE/FALSE) используется для выбора
одного из двух вариантов продолжения. В следующем примере функция in_array( ) используется для выбора одного из двух вариантов в
условной команде if:
// Ввод данных пользователем
$language = "French"; $email = "wjgilmore@hotmail.com";
// Если язык присутствует в массиве
if (in_array($language. $languages)) :
// Подписать пользователя на бюллетень.
// Обратите внимание: в РНР нет стандартной функции с именем
// subscribe_user(). В данном примере эта функция просто имитирует
// процесс подписки.
subscribe_user($email, $language);
print "You are now subscribed to the $language edition of the newsletter.";
// Язык отсутствует в массиве
else :
print "We're sorry, but we don't yet offer a $language edition of the newsletter".
endif;
Что происходит в этом примере? Допустим, переменные $language и $email содержат данные, введенные пользователем. Вы хотите убедиться в
том, что указанный язык поддерживается вашей системой, и используете для этой цели функцию in_array( ). Если название языка присутствует
в массиве, пользователь подписывается на бюллетень и получает соответствующее сообщение. В противном случае программа сообщает, что
на указанном языке бюллетень не распространяется. Конечно, в настоящей программе пользователь не должен гадать, какие языки
поддерживаются вашей программой. Задача решается при помощи раскрывающегося списка — эта тема подробно рассматривается в главе 10.
Здесь этот пример всего лишь демонстрирует возможности работы с массивами.
array_keys( )
Функция array_keys( ) возвращает массив, содержащий все ключи исходного массива, переданного в качестве параметра. Если при вызове
передается дополнительный параметр искомый_элемент, возвращаются только ключи, которым соответствует заданное значение; в
противном случае возвращаются все ключи массива. Синтаксис функции array_keys( ):
array array_keys (array массив [, mixed искомый_элемент])
Рассмотрим пример использования функции array_keys( ) для получения ключа заданного элемента:
$great_wines = array ("Australia" => "Clarendon Hills 96",
"France" => "Comte George de Vogue 97",
"Austria" => "Feiler Artinger 97");
$great_labels = array_keys($great_wines);
// $great_labels = array("Australia", "France", "Austria");
$great_labels = array_keys($great_wines, "Clarendon Hills 96");
// $great_labels = array("Australia");
Функция array_keys( ) позволяет очень легко получить все ключи ассоциативного массива — например, в предыдущем случае ими были
названия стран, в которых производятся различные сорта вин.
array_values( )
Функция array_values( ) возвращает массив, состоящий из всех значений исходного массива, переданного в качестве параметра. Синтаксис
функции array_values( ):
array array_values(array массив)
Вернемся к предыдущему примеру, в котором функция array_keys( ) использовалась для получения всех значений ключей. На этот раз функция
array_values( ) возвращает все значения, соответствующие ключам:
// $great_wines = array ("Australia" => "Clarendon Hills 96",
// "France" => "Comte George de Vogue 97",
// "Austria" => "Feiler Artinger 97");
$great_labels = array_values($great_wines);
// $great_labels = аrrау("Clarendon Hills 96",
// "Comte George de Vogue 97",
// "Feiler Artinger 97");
Функции array_keys( ) и array_values( ) дополняют друг друга, позволяя при необходимости получить все составляющие той или иной стороны
ассоциативного массива.
|