Новые книги

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

Для пользователей, администраторов и специалистов по безопасности
Переговорные техники, описанные Крисом Воссом, родились из сокрушительных поражений ФБР. После трагических событий на ферме Рэнди Уивера в штате Айдахо в 1992 году и в секте «Ветвь Давида» в 1993 году, где в общей сложности погибло почти 100 человек, стало понятно: традиционные методики не работают в экстремальных ситуациях. Поэтому ФБР начало усиленно искать принципиально новые подходы. В результате появились 9 принципов, изложенные автором этой книги, – топ-переговорщиком ФБР с двадцатилетним стажем.

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

Книга также выходит под названием «Переговоры без компромиссов. Веди переговоры так, словно от них зависит твоя жизнь».

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