Stránky neboli dlhú dobu aktualizované. Môžu obsahovať nepresné alebo neaktuálne informácie.
Hľadanie
Rozšírené vyhľadávanie
TOP 7 - stránky
Napaľovacie programy - 108 192x
Free Pascal - Úvod - 65 877x
Lazarus - Kreslenie - 47 455x
Free Pascal - Začiatky - 44 741x
Free Pascal - Podmienky - 37 097x
Free Pascal - Cykly - 36 348x
Internetové prehliadače - 36 214x
Nové v diskusii
Free Pascal - Cykly - štvrtok 31.3.
Lazarus - Začíname - piatok 25.3.
Anketa - streda 2.3.
Navigácia: Tvorba Webu > PHP - Polia

PHP - Polia

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áklady

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č";

Rôzne indexy

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];

Prechádzanie poľom

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
)

Viacrozmerné polia

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
Hodnotenie
1 2 3 4 5 (ako v škole)
Priemerná známka: 2,17
Diskusia k tejto stránke Príspevok na túto tému zatiaľ neexistuje. Môžete pridať prvý z nich!
Prejsť do diskusie»
2005-2012, Matúš Sulír, matus.sulir (zav) gmail bodka com. Gen.: 0,0472 s. Valid XHTML, CSS.