|
В 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";
} |
| |