BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 8 | UU: 534
Wyszukaj funkcję PHP:  

foreach

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:

$arr = array("jeden", "dwa", "trzy");
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";
}

| | | |
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker