LIST a EACH

Můžete mi vysvětlit funkce příkazů list a each. V každym manuálu, co jsem čet je to vysvětlovaný strašně zmateně. Díky, bude to pro vás určitě hračka.
Odpovídám ti, protože jsem to kdysi taky z manuálu nemohl nějak přežvýkat.

Tyto funkce jsou z kategorie funkcí na procházení polí. Pole lze procházet prvek po prvku jako např. soubor řádek po řádku. Stejně jako u souboru existuje pro to tzv. vnitřní ukazatel, který ti říká, kde se právě nacházíš (na kterém prvku pole).

Funkce each() - z anglického každý - prochází všechny prvky pole. Lépe řečeno při jejím spuštění se vrátí nformace o souasném prvku a pak se posune ukazatel na následující prvek.

Takže jsi třeba na prvku číslo 2 a použiješ:
$treti_prvek = each($pole);
echo $treti_prvek['key']." - ".$treti_prvek['value'];
Toto ti vypíše klíč 3. prvku a jeho hodnotu.

K projítí celého pole stačí:
reset($pole); // vrati ukazatel na zacatek pole
while ($prvek = each($pole))
{
echo $prvek['key']." - ".$prvek['value']."<BR>\n";
}


Funkce list() rozdělí pole na několik hodnot. V případě s procházením pole ji využiješ takto:
each() ti vrátí pole informací o poli které procházíš (key, value). Pomocí list() jem užeš šikovně zpracovat:

reset($pole);
while (list($nazev_prvku, $hodnota_prvku) = each($pole))
{
echo $nazev_prvku." - ".$hodnota_prvku."<BR>\n";
}
> Takže jsi třeba na prvku číslo 2 a použiješ

na 3. prvku
jojo, tyhle konstrukce byly zaklad pro praci s assoc. polema v php3, v php4 je potrebujes malokdy..
misto
while (list($nazev_prvku, $hodnota_prvku) = each($pole))
muzes pouzit
foreach($pole as $hodnota_prvku)
pripadne
foreach($pole as $nazev_prvku=>$hodnota_prvku)
Uz len mala poznamocka na zaver. Ak prechadzas polia pomocou each() a ukazatel je napriklad na tretej hodnote pola zacina sa od tejto hodnoty. Preto je rozumne pouzivat v spojeni s touto funkciou aj funkciu reset(), ktora presunie ukazatel na prvu hodnotu pola. Pri foreach tato praca odpada, pretoze tento prikaz to robi automaticky.
pravda, pravda... :-)

S tím, že nejprve posune ukazatel a pak vrati prvek jsem to nesmyslně přehodil, ale pak jsem to myslím opravil

> ...při jejím spuštění se vrátí nformace o souasném prvku a pak se posune ukazatel...

Ohledně foreach(), úplně jsem na něj zapomněl. Abych se přiznal, pole už jsem neprocházel hodně dlouho (ostuda :-), a tak jsem mu tam dal kousky staršího zdrojáku.