foreach
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
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";
}
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";
}
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";
}
$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";
}