98
PHP 5
4.5.1 Alternativní syntaxe Také pro cyklus for existuje alternativní zápis vyhýbající se použití složených závorek. Uvozovacím znakem bloku je opět dvojtečka, blok je ukončen příkazem endfor: <?php for (výraz1; výraz2; výraz3): příkaz1; příkaz2; příkaz3; endfor; ?>
4.6 Průchod polem pomocí foreach Cyklu for je podobný příkaz foreach, který slouží k iterativnímu procházení všech prvků daného pole. Již dříve jsme si řekli, že pro průchod poli používanými v PHP nelze rozumně použít žádný jiný druh cyklu. Jednoduchá syntaxe tohoto příkazu vypadá následovně: foreach ($pole as $hodnota) příkaz; V praxi to znamená, že proměnná pole je skutečnou proměnnou typu pole, jejíž všechny prvky chceme procházet, a hodnota zastupuje právě zpracovávaný prvek pole. Není podstatné, jak si proměnnou pojmenujeme. Příkaz foreach se postará o přiřazení správné hodnoty do této proměnné při každém průchodu. <?php $x = array(11, 13, foreach ($x as $y) // vypíše postupně // 11, 13, 12, 24, ?>
12, 24, 22, 8, 0, -12, 19); echo "$y, "; všechny prvky pole, tj: 22, 8, 0, -12, 19,
Tímto způsobem snadno projdeme celé pole, ale mnohdy pro správné zpracování potřebujeme zároveň znát příslušný index – to platí především u asociativních polí. V takovém případě je možné použít rozšířenou syntaxi, která v každém průchodu přiřadí nejen hodnotu do zadané proměnné, ale také její index do samostatné proměnné: foreach ($pole as $index => $hodnota) příkaz; Opět nezáleží na tom, jak si pojmenujeme naše „umělé“ proměnné, do kterých jsou přiřazeny hodnoty indexu i vlastní hodnoty pole. Například funkce, která vrací index největšího prvku zadaného pole bude vypadat takto: <?php function IndexNejvetsihoPrvku($a) { // není-li předaná proměnná typu pole, vrátí –1 a ukončí funkci if (!is_array($a)) return -1; $prvni = true; foreach($a as $index => $hodnota) if ($prvni) { $maxi = $index; $prvni = false; } elseif ($a[$maxi] < $hodnota)
4. Řízení běhu programu
Ukázka elektronické knihy, UID: KOS181201