foreachPodręcznik PHPPoprzedniRozdział 12. Struktury kontrolneNastępnyforeach
PHP 4 zawiera, czego brak w PHP 3, konstrukcję foreach,
podobną do jej odpowiedników z Perla i innych języków. Pętla ta umożliwia
łatwą iterację wewnątrz tablic. foreach działa tylko
na tablicach i każda próba użycia tej pętli na innym typie lub na
niezainicjowanej zmiennej będzie skwitowana komunikatem o błędzie.
Istnieją dwie składnie tej konstrukcji,
przy czym druga jest mniej ważnym, lecz użytecznym rozszerzeniem pierwszej:
foreach(wyrażenie_tablicowe as $wartość) wyrażenie
foreach(wyrażenie_tablicowe as $klucz => $wartość) wyrażenie
Pierwsza odmiana iteruje wewnątrz tablicy podanej w
wyrażenie_tablicowe. Przy każdej iteracji, wartość
aktualnego elementu tablicy jest przypisywana do zmiennej
$wartość, a wewnętrzny wskaźnik tablicy jest przesuwany
o jeden (więc w następnej iteracji przypisany zostanie kolejny element
tablicy).
Druga odmiana działa tak samo jak pierwsza, przy czym klucz aktualnego
elementu tablicy zostanie przypisany do zmiennej $klucz
w każdej iteracji.
Notatka:
Kiedy rozpoczyna się wykonywanie pętli foreach,
wewnętrzny wskaźnik tablicy jest automatycznie resetowany, co ustawia
go na pierwszym elemencie tablicy. Oznacza to, że nie trzeba wywoływać
komendy reset() przed rozpoczęciem pętli
foreach.
Notatka:
Proszę także pamiętać, że konstrukcja foreach operuje
na kopii tablicy, a nie na oryginale, więc położenie kursora tablicy
nie jest modyfikowane jak w konstrukcji each(),
a zmiany dokonane na pobranym elemencie tablicy nie oddziałują na
oryginalną tablicę. Jednakże wewnętrzny kursor oryginalnej tablicy
jest przesuwany w trakcie trawersowania tablicy.
Zakładając, że pętla foreach będzie działać aż
do przetworzenia całej tablicy, kursor tablicy będzie się znajdował na
końcu tablicy.
Notatka:
foreach nie pozwala na ukrycie komunikatów
o błędach za pomocą '@'.
Można zauważyć, że poniższe przykłady są funkcjonalnie identyczne:
reset ($tabl);
while (list(, $wartość) = each ($tabl)) {
echo "Wartość: $wartość<br>\n";
}
foreach ($tabl as $wartość) {
echo "Wartość: $wartość<br>\n";
}
Poniższe przykłady są również funkcjonalnie identyczne:
reset ($tabl);
while (list($klucz, $wartość) = each ($tabl)) {
echo "Klucz: $klucz; Wartość: $wartość<br>\n";
}
foreach ($tabl as $klucz => $wartość) {
echo "Klucz: $klucz; Wartość: $wartość<br>\n";
}
Więcej przykładów demonstrujących użycie tej pętli:
/* przykład 1 foreach: tylko wartość */
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "Aktualna wartość \$a: $v.\n";
}
/* przykład 2 foreach: wartość (z kluczem generowanym dla potrzeb ilustracji)*/
$a = array (1, 2, 3, 17);
$i = 0; /* tylko dla potrzeb ilustracyjnych */
foreach($a as $v) {
print "\$a[$i] => $v.\n";
$i++;
}
/* przykład 3 foreach: klucz i wartość */
$a = array (
"jeden" => 1,
"dwa" => 2,
"trzy" => 3,
"siedemnaście" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}
/* przykład 4 foreach: tablice wielowymiarowe */
$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";
}
}
/* przykład 5 foreach: tablice dynamiczne */
foreach(array(1, 2, 3, 4, 5) as $v) {
print "$v\n";
}
PoprzedniSpis treściNastępnyforPoczątek rozdziałubreak
Wyszukiwarka
Podobne podstrony:
control structures foreachcontrol structures foreachcontrol structures continuecontrol structures forcontrol structures whilecontrol structures elseifcontrol structures switchcontrol structurescontrol structures switchcontrol structures declarecontrol structures breakcontrol structurescontrol structures do whilecontrol structures continuecontrol structures alternative syntaxcontrol structures elsecontrol structures alternative syntaxwięcej podobnych podstron