Четверг, 16.05.2024, 11:21
DigitalBox
Приветствую Вас Гость | RSS
Главная Массивы в выражениях Регистрация Вход
Меню сайта

Массивы в выражениях



Массивы можно использовать в выражениях точно так же, как и переменные. Этот раздел как раз и посвящен этому вопросу.

Значения отдельных элементов массива можно легко получать путем прямого доступа к ним, как, например, в следующем выражении:

$CAcapital = $capitals['СА'];
echo $CAcapital;

Результатом выполнения будет:

Сакраменто

Если попытаться получить доступ к несуществующему элементу массива, РНР выдаст сообщение об ошибке:

$CAcapital = $capitals['CAx'];

Поскольку в массиве $capitals нет элемента с индексом САх, будет выведено следующее:

Notice: Undefined index: CAx in d:\testarray.php on line 9
(Предупреждение: Неизвестный ключ: САх в файле d:\testarray.php в строке 9)

При этом сообщение об ошибке не прекращает выполнения последующих строк кода сценария. Но поскольку переменной $CAcapital не было присвоено никакого значения, при использовании функции echo будет выводиться пустая строка. Для предотвращения сообщения об ошибке необходимо использовать символ @:

@$CAcapital = $capitals['САх'];


Использование массивов в операторе echo

Для вывода элементов массива с помощью функции echo следует воспользоваться выражением:

echo $capitals['ТХ'];

В результате получим:

Остин

Если необходимо поместить массив в длинную строку в двойных кавычках, его название нужно заключить в фигурные скобки:

echo "Столица штата Техас — {$capitals['ТХ']}";

Результатом выполнения этого выражения будет следующее:

Столица штата Техас — Остин


Использование массивов в функции list

РНР позволяет получать значения и индексы нескольких элементов массива одновременно. С помощью функции list() можно копировать значения массивов в переменные. Пусть, например, имеется массив:

$shoeInfo = array("мокасины", "черные", 22.00);

Информацию о нем можно получить, используя функцию print_r():

print_r($shoeInfo);

Результатом выполнения будет следующее:

Array
(
     [0] => мокасины
     [1] => черные
     [2] = > 22
)

Следующий пример иллюстрирует использование функции list():

list($first, $second) = $shoeInfo;
echo $second, " " , $first;

В результате РНР создаст две переменные, $first и $second, которым будут присвоены значения первых двух элементов массива $shoeInfо, что эквивалентно выполнению операторов:

$first = $shoeInfo[0] ;
$second = $shoeInfo[1];

Значение третьего элемента массива, $shoeInfo, не будет скопировано, поскольку функция list() содержит только два аргумента. В результате функция echo выведет:

черные мокасины

В некоторых случаях необходимо получить индекс элемента массива, а не его значение. Для этих целей предназначена функция key(). Предположим, что первым элементом массива является:

$shoeInfo['style'] = "мокасины";

В следующем выражении с помощью echo выводятся индекс и значение первого элемента массива $shoeInfо:

$value = $shoeInfo['style'];
$key = key($shoeInfо);
echo "$key: $value";

Результатом выполнения будет:

стиль: мокасины

В первой строке кода переменной $value присваивается значение "мокасины", во второй с помощью функции key() переменной $кеу присваивается индекс элемента. В данном случае мы получаем информацию о первом элементе, поскольку указатель массива, который отвечает за перемещение по массиву, установлен в текущей позиции.


Перемещение по массивам

Часто необходимо производить различные операции над каждым элементом массива. Например, нужно вывести все значения, сохранить их в базе данных или прибавить к каждому элементу число 7. Формально выражаясь, процесс перебора всех элементов массива является итеративным, т.е. состоящим из итераций, или проходом (traversing). В данном разделе списаны два таких способа.

  • Перебор вручную. Использование указателя для перехода от одного элемента массива к другому;
  • С помощью оператора foreach. Поэлементный автоматический проход по массиву от его начала до конца.

Перебор элементов массива вручную

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

  • current($имя_массива). Возвращает текущее значение элемента массива, не перемещая указатель.
  • next($имя_массива). Перемещает указатель вперед на один элемент.
  • previous($имя_массива). Перемещает указатель назад на один элемент.
  • end($имя_массива). Перемещает указатель в конец массива.
  • reset($имя_массива). Перемещает указатель в начало массива.

С помощью следующего выражения осуществляется проход по всем элементам массива, содержащего названия столиц штатов:

$value = current($capitals);
echo "$value<br>";
$value = next($capitals);
echo "$value<br>";
$value = next($capitals);
echo "$value<br>";

Поскольку указатель ранее не перемещался, по умолчанию он установлен на первый элемент массива. Если же положение указателя изменялось в предыдущих строках кода или нет уверенности, что отсчет начнется с первого элемента, то следует предварительно воспользоваться функцией reset():

reset($capitals);

Использование этого метода для прохода по массиву предполагает выполнение оператора присваивания и функции echo для каждого элемента (в общем случае для каждого из 50 штатов). В результате будет выведен список названий штатов.

Этот метод достаточно гибок. Можно просто перемещаться по массиву в произвольном порядке и обрабатывать его элементы. Можно перемещаться назад, непосредственно перейти в конец, пропускать элементы, используя подряд два выражения next, или применять любой другой полезный прием. Однако, если необходимо пройти поэлементно массив от начала до конца, язык РНР позволяет использовать более простой метод, а именно оператор fоreach, который выполняет те же действия намного эффективнее. Этот оператор рассматривается ниже.


Использование оператора foreach для прохода по массиву

Оператор foreach осуществляет поэлементный проход по массиву и позволяет выполнить набор инструкций со значениями и индексами. Общий синтаксис имеет вид:

foreach{$имя_массива as $ключ => $значение)
{
     набор операторов;
}

Параметрами выражения foreach являются следующие:

  • $имя_массива. Имя массива.
  • $ключ. Имя переменной, которой будут присваиваться значения индексов элементов массива. Этот параметр является необязательным, т.е. без его использования сохранится только значение элемента массива в переменной $значение.
  • $значение. Имя переменной, которой будут присваиваться значения элементов
    массива.

Рассмотрим следующий пример, в котором оператор foreach используется для вывода численности населения по штатам:

$state_population = array ("CA" => 34501130,
                                             "WY" => 494423,
                                             "OR" => 3472867);
ksort($state_population);
foreach($state_population as $state => $population)
{
     $population = number_format($population);
     echo "$state: $population.<br>";
}

В результате на Web-странице отобразится следующее:

СА: 34,501,130
OR: 3,472,867
WY: 494,423

Можно воспользоваться и следующей строкой кода:

foreach($state_population as $population)

Однако в этом случае мы будем иметь доступ только к значениям (численности населения) массива, но не к индексам.

При использовании оператора foreach указатель автоматически перемещается в начато, т.е. нет необходимости использовать функцию reset().


Определение размера массива

Для получения информации о структуре и значениях массива можно использовать функцию var_dump() или print_r() (см. выше раздел "Вывод элементов массивов"). Но тогда необходимо просто знать размер массива. Для этого в языке РНР предусмотрены две функции: count() и sizeof(). Их общий синтаксис имеет следующий вид:

$n = count($имя_массива);
$n = sizeof($имя_массива);

В результате выполнения переменной $n будет присвоено значение количества элементов в массиве.

Форма входа

Мини-чат

Календарь новостей
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Поиск

Друзья сайта
Скажи сайту спасибо
ЯндексЯндекс. ДеньгиХочу такую же кнопку



Получить WMR-бонус на свой кошелек!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz