Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие

РБМК-1000
Гражданский суда
Авиация

Высшая математика

Задачи
Практикум
Карта сайта

Ссылки на многомерные массивы

Ссылки на элементы многомерных массивов внутри строк несколько отличаются от ссылок на другие типы данных. Возможны два варианта. Во-первых, можно воспользоваться оператором конкатенации:

print "Brownies are good, but the calories content is ".

$desserts["Brownies"]["calories"];

Во-вторых, ссылку на элемент многомерного массива можно заключить в фигурные скобки ({ }):

print "Brownies are good, but the calories content is

{$desserts[Brownies][calories]}";

Обратите внимание на отсутствие кавычек вокруг ключей. Также следует помнить, что между фигурными скобками и ссылкой не должно быть лишних пробелов. Если хотя бы одно из этих условий не выполняется, произойдет ошибка. Впрочем, годятся оба способа. Я рекомендую выбрать один формат и придерживаться его, чтобы ваши программы выглядели более последовательно. Если не использовать какой-либо из этих способов форматирования, ссылки на многомерные массивы будут интерпретироваться буквально, что наверняка приведет к непредвиденным результатам.

Поиск элементов массива

Поиск элементов относится к числу важнейших операций с массивами. В РНР существует несколько стандартных функций, позволяющих легко находить в массиве нужные ключи и значения.

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

На главную