Polia v PHP nemajú nič spoločné s poľnohospodárstvom. Sú to špeciálne premenné, ktoré obsahujú viacero iných premenných - prvkov poľa. Každý prvok má svoj index (môže to byť číslo alebo reťazec) a hodnotu.
Základný spôsob vytvorenia poľa je pomocou príkazu array
. Nasledujú zátvorky a jednotlivé prvky v tvare index => hodnota
, oddelené čiarkami.
$pole = array( 0 => "jablko", 1 => "hruška", 2 => "banán" );
Napríklad prvok s indexom 1 má hodnotu „hruška“.
Ak indexy neurčíme, priradia sa automaticky. Začína sa od nuly. Nasledujúci kód urobí presne to isté, čo predchádzajúca ukážka.
$pole = array("jablko", "hruška", "banán");
Takto vypíšeme nápis „jablko“:
echo $pole[0];
Prvky poľa môžeme aj meniť. Nasledujúcim kódom priradíme druhému prvku inú hodnotu:
$pole[1] = "pomaranč";
PHP ponúka aj reťazcové indexy polí. To dokáže máloktorý jazyk.
$hlavne_mesta = array( "Slovensko" => "Bratislava", "Česko" => "Praha", "Bhután" => "Thimphu", "Mozambik" => "Maputo" )
K jednotlivým prvkom potom pristupujeme takto:
$hlavne_mesta["Australia"] = "Canberra";
Číselné a reťazcové indexy môžeme aj miešať:
$pole = array( 15 => "ABC", "retazec" => "XYZ" );
Ak chceme pridať do poľa prvok, ktorý bude mať index o 1 väčší, ako je najväčší index poľa, použijeme prázdne hranaté zátvorky.
/* prázdne pole */ $abeceda = array(); /* vytvorime prvok s indexom 1 */ $abeceda[1] = "a"; /* pridáme prvky s indexmi 2, 3,... */ $abeceda[] = "b"; $abeceda[] = "c"; $abeceda[] = "d"; /* vypíšeme písmeno c */ echo $abeceda[3];
Dajme tomu, že máme nasledujúce pole:
$pole = array("zem", "pluh", "burina", "zem");
Chceme sa vybrať na prechádzku po poli a vypísať všetky jeho prvky, oddelené medzerou. Väčšina začiatočníkov by si vybrala tento spôsob:
$i = 0; // index 1. prvku je 0 /* kým prvok nie je prázdny */ while ($pole[$i] != "") { echo $pole[$i]." "; // vypíšeme ho $i++; // nabudúce vypíšeme ďalší prvok }
Poďme spoločne kód zjednodušovať. Zápis != ""
je zbytočný, pretože neprázdny reťazec vracia true
. Zväčšenie o 1 ($i++
) môžeme napísať priamo do hranatých zátvoriek. Najprv sa totiž vráti hodnota $i a až potom sa zväčší.
$i = 0; while ($pole[$i]) echo $pole[$i++]." ";
PHP však prináša vylepšenie - príkaz foreach
. Ten postupne prechádza každým prvkom poľa, ukladá jednotlivé hodnoty do nami zadanej premennej a vždy pritom vykoná kód, ktorý určíme.
foreach ($pole as $premenna) príkaz;
Takto jednoducho môžeme vypísať všetky prvky nášho poľa:
foreach ($pole as $prvok) echo "$prvok ";
Ak chceme počas prechádzania poľom poznať vždy aj index jednotlivých prvkov, použijeme rozšírenú syntax.
foreach ($pole as $index => $prvok) { echo "$index = $prvok<br>"; }
Ako vždy, existuje aj alternatívna syntax (s dvojbodkou):
foreach (niečo): príkaz1; príkaz2; atď... endforeach;
Pozor, ak by ste chceli jednotlivé prvky pri prechádzaní cez foreach
aj upravovať, musíte pred názov premennej dať znak &
.
foreach ($pole as &$prvok) $prvok = $prvok." je na poli";
Ak chcete čo najjednoduchšie pre vlastnú potrebu vidieť, čo sa v poli nachádza, použite funkciu print_r
.
print_r($pole);Výsledok bude asi takýto:
Array ( [0] => zem je na poli [1] => traktor je na poli [2] => burina je na poli [3] => zem je na poli )
Pole môže tiež obsahovať iné pole.
$viac = array( 4 => 9, 7 => array(5, 12) );
K takýmto poliam pristupujeme viacerými hranatými zátvorkami za sebou.
echo $viac[7][0]; // vypíše: 5