Načrtovanje in razvoj spletnih aplikacij

Polja v PHP

Spremenljivka v PHP običajno hrani eno vrednost. Polje pa omogoča, da pod enim imenom shranimo več vrednosti. Polje je urejena zbirka elementov, do katerih dostopamo s ključi.

Ključi v polju so lahko števila ali nizi. Zato v PHP najpogosteje ločimo numerična, asociativna in večdimenzionalna polja.

Pomni: Polje uporabimo takrat, ko želimo v eni spremenljivki hraniti več med seboj povezanih vrednosti.

Osnovna pravila

  • Polje lahko vsebuje več elementov pod enim imenom.
  • Do elementov dostopamo s ključem ali indeksom.
  • Numerična polja uporabljajo predvsem številske indekse.
  • Asociativna polja uporabljajo tekstovne ključe.
  • Večdimenzionalna polja vsebujejo druga polja.
  • Pri dostopu do elementa moramo uporabiti pravilen ključ ali indeks.

Pozor: Če uporabimo neobstoječ ključ ali indeks, rezultat ni pravilen in program lahko izpiše opozorilo.

Numerična polja

Pri numeričnem polju so ključi običajno zaporedna števila, ki se začnejo z 0. V sodobnem PHP jih najpogosteje zapisujemo s kratko sintakso [], lahko pa tudi s starejšo sintakso array().

$sadezi = ["banana", "ananas", "limona"];

Do posameznega elementa dostopamo z indeksom:

echo $sadezi[1]; // izpiše ananas

Indeks lahko po potrebi določimo tudi sami:

$sadezi[0] = "banana";
$sadezi[100] = "jabolko";

Pomni: V numeričnem polju je prvi element na indeksu 0, ne na indeksu 1.

Primer:

$imena1 = ["Lojze", "Janez", "Mojca"];
// je enako kot
$imena2[0] = "Lojze";
$imena2[1] = "Janez";
$imena2[2] = "Mojca";
<?php
$skupina = ["Lojze", "Janez", "Mojca"];

echo "Člani skupine so: " . $skupina[0] . ", " . $skupina[1] . " in " . $skupina[2] . ".";
?>
Člani skupine so: Lojze, Janez in Mojca.

Asociativna polja

Pri asociativnem polju namesto številskih indeksov uporabljamo ključe, zapisane kot nize. Tako lahko podatke označimo z bolj opisnimi imeni.

$karakter = ["ime" => "Janez", "poklic" => "elektroinženir", "starost" => 30];

Do podatkov dostopamo s ključem:

echo $karakter["starost"]; // izpiše 30

Pomni: Asociativno polje je uporabno takrat, ko želimo podatke povezati z opisnimi ključi, na primer ime, starost ali kraj.

Primer:

// starost članov
$imena = ["Lojze" => 32, "Janez" => 18, "Mojca" => 22];
// isto kot
$imena["Lojze"] = 32;
$imena["Janez"] = 18;
$imena["Mojca"] = 22;
<?php
$imena = ["Lojze" => 32, "Janez" => 18, "Mojca" => 22];

echo "Člani so stari: ";
echo $imena["Lojze"] . ", ";
echo $imena["Janez"] . " in ";
echo $imena["Mojca"] . " let.";
?>
Člani so stari: 32, 18 in 22 let.

Večdimenzionalna polja

Večdimenzionalno polje je polje, katerega elementi so lahko tudi druga polja. Takšna polja uporabljamo, kadar želimo združevati bolj zapletene podatke.

$polje[1][2];

Do podatkov v večdimenzionalnem polju dostopamo z več ključi ali indeksi.

<?php
$osebe = [
    "Peter" => ["starost" => 32, "visina" => 172],
    "Janez" => ["starost" => 18, "visina" => 183]
];

echo "Janez je star: " . $osebe["Janez"]["starost"] . " let.";
?>
Janez je star: 18 let.

Pozor: Pri večdimenzionalnih poljih moramo paziti na pravilen vrstni red ključev, saj napačen zapis pomeni dostop do napačnega elementa ali do neobstoječe vrednosti.

Primerjava vrst polj

Vrsta polja Ključi Primer uporabe
numerično polje številski indeksi seznam imen, seznam sadja, seznam ocen
asociativno polje opisni ključi osebni podatki, nastavitve, lastnosti predmeta
večdimenzionalno polje več ključev ali indeksov tabele podatkov, skupine oseb, zapletene strukture

Pomni: Izbira vrste polja je odvisna od tega, kako želimo podatke organizirati in kako bomo do njih dostopali.

Delo s polji in zanko foreach

Za prehod skozi vse elemente polja najpogosteje uporabimo zanko foreach. Tak zapis je pregleden in posebej primeren za delo s polji.

<?php
$sadezi = ["banana", "ananas", "limona"];

foreach ($sadezi as $sadez) {
    echo $sadez . "<br>";
}
?>

Pomni: Zanka foreach je najpogostejši in najbolj pregleden način za obdelavo vseh elementov polja.

Priporočila

  • Za preproste sezname uporabljamo numerična polja.
  • Za opisno urejene podatke uporabljamo asociativna polja.
  • Za bolj zapletene podatkovne strukture uporabljamo večdimenzionalna polja.
  • Pri delu z vsemi elementi polja je priporočljivo uporabiti zanko foreach.
  • Ključe in imena spremenljivk izbiramo jasno in smiselno.

Pozor: Nepregledno poimenovani ključi in spremenljivke otežijo razumevanje kode in povečajo možnost napak.

Pogoste napake

  • Predpostavi se, da se prvi element numeričnega polja začne z indeksom 1 namesto 0.
  • Uporabi se napačen ključ ali napačen indeks.
  • Pri asociativnem polju se namesto ključa uporabi številski indeks.
  • Pri večdimenzionalnem polju se ne upošteva pravilno zaporedje ključev ali indeksov.
  • Do elementa polja se dostopa, čeprav ta element ni določen.
  • Za prehod skozi polje se uporabi manj pregleden pristop, čeprav bi bila zanka foreach primernejša.

Pozor: Velik del napak pri delu s polji nastane zaradi napačnega razumevanja ključev, indeksov in strukture podatkov.

Sklep

Polja v PHP omogočajo shranjevanje več vrednosti v eni spremenljivki in so zato zelo pomemben del programiranja. Pri delu s polji moramo razumeti razliko med numeričnimi, asociativnimi in večdimenzionalnimi polji, pravilno uporabljati ključe ter izbrati ustrezno strukturo glede na podatke, ki jih obdelujemo.