Manuál PHP | ||
---|---|---|
Předcházející | Kapitola 12. Řídicí struktury | Další |
PHP 4 (ne PHP 3) zahrnuje konstrukt 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í:
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 automaticky 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 konstruktem 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 '@'.
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"; } |
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"; } |
Předcházející | Domů | Další |
for | Nahoru | break |