Новые книги

Отношения с клиентами – это не что-то абстрактное, возникающее само по себе. В секторе B2B существует последовательная система, позволяющая выстроить деловые связи с практически любым клиентом, а значит, успешно продавать и выполнять планы продаж.

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

Книга адресована всем, кто хочет научиться использовать эту систему, выполнять планы продаж и обзавестись клиентами на всю жизнь.
As distributed computer systems become more pervasive, so does the need for understanding how their operating systems are designed and implemented. Andrew S. Tanenbaum's Distributed Operating Systems fulfills this need. Representing a revised and greatly expanded Part II of the best-selling Modern Operating Systems, it covers the material from the original book, including communication, synchronization, processes, and file systems, and adds new material on distributed shared memory, real-time distributed systems, fault-tolerant distributed systems, and ATM networks. It also contains four detailed case studies: Amoeba, Mach, Chorus, and OSF/DCE. Tanenbaum's trademark writing provides readers with a thorough, concise treatment of distributed systems.

foreach



Учебник РНР
Назад Глава 11. Структуры Управления Вперёд

foreach

В PHP 4 (не в PHP 3) имеется конструкция foreach, напоминающая аналоги из Perl и некоторых других языков. Она даёт простой способ итерировать по массиву. Есть два вида синтаксиса: второй является расширением первого и используется реже:

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

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

Второй вид выполняет то же самое, но ключ/key текущего элемента присваивается переменной $key.

Примечание: при старте foreach внутренний указатель массива автоматически устанавливается на первый элемент массива. Это означает, что вам не нужно вызывать reset() перед началом выполнения цикла foreach.

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

Примечание: foreach не поддерживает возможность подавления сообщений об ошибках с использованием '@'.

Заметьте, что следующие варианты функционально идентичны:

reset ($arr);
while (list(, $value) = each ($arr)) {
    echo "Value: $value<br>\n";
}

foreach ($arr as $value) {
    echo "Value: $value<br>\n";
}

Следующие варианты также функционально идентичны:

reset ($arr);
while (list($key, $value) = each ($arr)) {
    echo "Key: $key; Value: $value<br>\n";
}

foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br>\n";
}

Ещё несколько примеров использования:

/* foreach пример 1: только value */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
   print "Current value of \$a: $v.\n";
}

/* foreach пример 2: value (с key, выводимым для иллюстрации) */

$a = array (1, 2, 3, 17);

$i = 0; /* только для иллюстрации */

foreach($a as $v) {
    print "\$a[$i] => $v.\n";
    $i++;
}

/* foreach пример 3: key\ключ и value\значение */

$a = array (
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach($a as $k => $v) {
    print "\$a[$k] => $v.\n";
}

/* foreach пример 4: многомерные массивы */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1) {
    foreach ($v1 as $v2) {
        print "$v2\n";
    }
}

/* foreach пример 5: динамические массивы */

foreach(array(1, 2, 3, 4, 5) as $v) {
    print "$v\n";
}

НазадОглавление Вперёд
for Вверхbreak