Popis
Príkaz jazyka PHP
PHP 4 (ne PHP 3) zahrnuje příkaz foreach, podobně jako Perl a různé další jazyky. To poskytuje snadný způsob k iteraci přes pole. Existují dvě syntaxe; ta druhá je menším, avšak užitečným rozšířením té první:
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
První forma traverzuje pole dané výrazem array_expression. V každé iteraci je hodnota aktuálního elementu přiřazena do $value a vnitřní ukazatel na pole je zvýšen o jednotku (tzn. v příští iteraci budete hledět na následující element).
Druhá forma dělá totéž, kromě toho, že aktuální klíč elementu bude v každé iteraci přiřazen do proměnné $key.
Poznámka: Když foreach začne provádění první iterace, je vnitřní ukazatel aicky nastaven na první element pole. To znamená, že před foreach nemusíte volat reset.
Poznámka: Uvědomte si také, že foreach pracuje na kopii specifikovaného pole, nikoli na poli samotném, proto ukazatel na pole není modifikován tak, jako příkazem each a změny na vráceném elementu se na původním poli neprojeví.
Poznámka: foreach nepodporuje možnost potlačit chybová hlášení použitím '@'.
Príklad
Můžete si všimnout, že následující příklady jsou funkčně totožné:
reset ($arr);
while (list
(,
$value) =
each ($arr)) {
echo "Hodnota: $value<br>\n";
}
foreach ($arr as
$value) {
echo "Hodnota: $value<br>\n";
}
Následující příklady jsou rovněž funkčně totožné:
reset ($arr);
while (list
($key,
$value) = each
($arr)) {
echo "Klíč: $key; Hodnota: $value<br>\n";
}
foreach ($arr as
$key =>
$value) {
echo "Klíč: $key; Hodnota: $value<br>\n";
}
Další příklady demonstrující použítí:
/* foreach příklad 1: pouze hodnota */
$a =
array (1, 2, 3, 17
);
foreach ($a as
$v) {
print "Současná hodnota \$a: $v.\n";
}
/* foreach příklad 2: hodnota (pro ilustraci je vypsán i klíč) */
$a =
array (1, 2, 3, 17
);
$i = 0;
/* pouze pro ilustrativní účely */
foreach($a as
$v) {
print "\$a[$i] => $v.\n";
$i++;
}
/* foreach příklad 3: klíč a hodnota */
$a = array
(
"jedna" => 1,
"dvě" => 2,
"tři" => 3,
"sedmnáct" => 17
);
foreach($a as
$k =>
$v) {
print "\$a[$k] => $v.\n";
}
/* foreach příklad 4: vícerozměrná pole */
$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 příklad 5: dynamická pole */
foreach(array
(1, 2, 3, 4, 5
) as
$v) {
print "$v\n";
}