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



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