A PHP tömbjei rendezett leképezéseket valósítanak meg. A leképezés értékeket rendel kulcsokhoz. Ez a típus sokféleképpen használható, mint egy hagyományos tömb, egy lista (vektor), hash tábla, szótár, kollekció, halmaz, sor, és mások. Mivel egy újabb PHP tömb szerepelhet értékként, könnyen szimulálhatsz fákat.
Az említett struktúrák leírása ezen kézikönyv kereteibe nem fér bele, de legalább egy példát mutatunk mindegyikre. További információkért külső forrásokat kell igénybe venned erről az igen széles témáról.
Egy array (tömb) típusú változót az array() nyelvi elemmel tudsz létrehozni, amely számos vesszővel elválasztott kulcs => érték párt vár.
Egy kulcs vagy egy nemnegatív integer (egész szám) vagy egy string. Ha a kulcs egy szabványos formában megadott nemnegatív egész szám (integer), az megfelelő módon kerül értelmezésre. Konkrétabban pl. a '8' a 8 egész szám lesz, míg a '08' a '08' string.
Az érték bármi lehet.
array( [kulcs =>] érték , ... ) // a kulcs vagy egy string vagy egy nemnegatív integer (egész szám) // az érték bármi lehet |
Meglévő tömbök is módosíthatóak konkrét elemek megadásával.
Ezt úgy tudod megtenni, hogy a tömb neve után szögletes zárójelekben megadod a kulcsot, amit módosítani szeretnél. Ha elhagyod a kulcsot, és csak egy üres szögletes zárójel párt ("[]") adsz meg a változó neve után, a tömb végére illeszthetsz elemet.
$tomb[kulcs] = érték; $tomb[] = érték; // a kulcs vagy egy string vagy egy nemnegatív integer (egész szám) // az érték bármi lehet |
Jónéhámy függvény létezik a tömbökkel való munka megkönnyítésére. Lásd a tömb függvények című részt.
A foreach vezérlési szerkezet kifejezetten a tömbök számára jött létre. Egy egyszerű módszert ad tömbökön való végiglépkedésre.
Talán láttad ezt a szintaxist régi PHP programokban:
Ez hibás, és mégis működik. Akkor mégis miért nem jó? Az ok az, ami már a szintaxis részben is olvasható volt, hogy a szögletes zárójelek ('[' és ']') között egy kifejezésnek kell állnia. Ez azt jelenti, hogy írhatsz ehhez hasonló dolgokat is: Ez a példa bemutatja, hogyan használhatsz függvény visszatérési értéket tömbindexként. A PHP úgyszintén ismeri a konstansokat. Bizonyára hallottál már az E_* konstansokról.$hiba_leiras[E_ERROR] = "Fatális hiba történt"; $hiba_leiras[E_WARNING] = "A PHP figyelmeztetést adott"; $hiba_leiras[E_NOTICE] = "Informális megjegyzés"; |
$hiba_leiras[1] = "Fatális hiba történt"; $hiba_leiras[2] = "A PHP figyelmeztetést adott"; $hiba_leiras[8] = "Informális megjegyzés"; |
Akkor hogyan lehet mégis, hogy az $ize[valami] működik? Nos, azért, mert valami a szintaxisa következtében egy konstanst határoz meg. Azonban ebben az esetben valami nevű konstans nem létezik. A PHP ebben az esetben azt feltételezi, hogy a valami karaktersorozatra gondolsz ("valami"), csak elfejeltetted kitenni az idézőjeleket.
Valamikor a jövőben a PHP fejlesztői hozzáadhatnak egy új konstanst vagy kulcsszót a nyelvhez, és akkor bajba kerülsz. Például jelenleg sem használhatóak az empty és default szavak, mivel ezek speciális kulcsszavak.
Ha ezek az érvek nem győznek meg: ez a szintaxis egyszerűen nem javasolt, és bármikor megszűnhet működni.
Tipp: Ha az error_reporting beállítást E_ALL értékre állítod be, látni fogod, hogy a PHP figyelmeztetéseket generál, ha ezt a kunstrukciót használod. Ez ugyanígy érvényes minden más nem javasolt 'szolgáltatásra'. (Add az error_reporting(E_ALL); sort a programod elejéhez).
Megjegyzés: Idézőjeles stringekben, egy másik szintaxis érvényes. Lásd a változók behelyettesítése című részt további részletekért.
A tömb típus a PHP-ben nagyon sokoldalú, ezért összegyűjtöttünk néhány példát, hogy megmutassuk a tömbök erejét.
// ez $a = array( 'szín' => 'piros', 'íz' => 'édes', 'alak' => 'kerek', 'név' => 'alma', 4 // 0 lesz a kulcsa ); // teljesen megyezik ezzel $a['szín'] = 'piros'; $a['íz'] = 'édes'; $a['alak'] = 'kerek'; $a['név'] = 'alma'; $a[] = 4; // 0 lesz a kulcsa $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; // a következő tömböt adja: array( 0 => 'a' , 1 => 'b' , 2 => 'c' ) // vagy egyszerűen: array('a', 'b', 'c') |
Figyelj arra, hogy jelenleg közvetlenül nem lehet módosítani a tömb elemeinek értékét ezzel a ciklussal. A problémát a következőképpen tudod megkerülni:
Példa 6-6. Kollekció
|
Ebben a példában egy egytől számozott tömböt készítünk.
Példa 6-7. Egytől kezdődő index
|
Példa 6-8. Felöltés valós adatokkal
|
A tömbök rendezettek. A sorrendet számos függvénnyel megváltoztathatod. Lásd a tömb függvények című részt további információkért.
Mivel a tömb egy értéke bármi lehet, értékként akár egy másik tömböt is megadhatsz. Ilyen formában készíthetsz rekurzív vagy többdimenziós tömböket.