Előző fejezetünkben megismertük a változókat. Gyakran szükséges, hogy a változóinkat csoportokba rendezzük, listázzuk, amiket aztán közös néven is megszólíthatunk. Nagyon leegyszerűsítve ezeket nevezzük tömböknek. A tömbök tehát a adatainkat rendezett csoportokban tárolják. Minden tömbnek van egy neve, valamint az egyes tömbelemeknek is van egy saját azonosítójuk a tömbön belül - ezt kulcsoknak, vagy tömbindexeknek nevezzük. Az egész tömböt annak nevével, az egyes adatokat a tömb nevével és a tömbelem külcsával tudjuk elérni. Az egyes tömbelemekben tárolhatunk integer, float, string, boolean típusú adatokat, vagy akár teljes további tömböket is. Így több egymásba épített tömbbel egy "fa szerketet" is leképezhetünk.
A tömbelemek azonosítójaként megadható nem negatív egész szám (integer), vagy egy karaktersor (string). Ennek megfelelően léteznek normál (numerikus) és asszociatív tömbök. A normál tömböknél ezt az azonosítót a tömb indexének, míg asszociatív tömböknél a kulcsának szoktuk nevezni.
normál (numerikus) tömbök
Alapértelmezés szerint a tömböket számokkal indexeljük. A tömb tartalmazhat tetszőleges számú tömbelemet, amiknek van egyedi indexük és minden tömbelembe saját értéket tölthetünk. A tömbelemeket vesszővel kell elválasztani egyástól.
Fontos megjegyezni: Automatikusan generált tömbindexeknél az első elem indexe mindig 0 lesz. Tehát egy 5 elemes folyamatosan (kihagyás nélkül) indexelt tömb utolsó elemének indexe nem 5, hanem 4 lesz.
Tömb létrehozása: Numerikus tömböt kétféle módon hozhatunk létre:
1. Létezik erre a célra az array() nyelvi elem, melyet az alábbi módon használunk: <?php
$egy_tomb = array (0 => "ez", 1 => "az", 2 => "amaz");
?>
Csak a numerikus tömböknél, ha a tömbindexek folyamatosan követik egymást - pl. egyszerű listázásnál - ennek a meghatározásnak létezik egy rövidebb formája, ahol az indexeket a PHP adja hozzá: <?php
$egy_tomb = array ("ez", "az", "amaz");
?>
2. Megadhatjuk a tömbelemeket egyesével is, szögletes zárójelek használatával: <?php
$egy_tomb[0] = "ez";
$egy_tomb[1] = "az";
$egy_tomb[2] = "amaz";
?>
Meglévő tömbhöz új elemet is ezzel a szögletes zárójeles formával lehet felvenni: <?php
$egy_tomb[3] = "ez egy új elem";
?>
Ugyanezzel a formával lehet egy tömbelem értékét felülírni is.
Természetesen nem szükséges az indexeknek folyamatosan követniük egymást, azokat tetszés szerint határozhatjuk meg. Ha azonban egy új tömbelemnek nem adjuk meg az indexét, a PHP automatikusan az abban a tömbben létező legnagyobb tömbindexnél eggyel nagyobb indexet ad neki. A fenti példánk tehát egyenértékű ezzel: <?php
$egy_tomb[] = "ez egy új elem";
?>
Tömbelemek elérése: A tömbelemeket a tömb nevével és a keresett tömbelem indexével lehet elérni (Itt persze mindig szükséges megadni a kérdezett elem indexét is): <?php
print ($egy_tomb[2]); // kiírja a 2-es indexű tömbelem értékét
?>
Egy tömbelem törlése: A tömb egy elemét az unSet() függvénnyel (ez is a PHP beépített függvénye) törölhetjük. Ilyenkor a megmaradó tömbelemek indexe nem változik meg. <?php
unSet ($egy_tomb[1]); // töröljük az 1 indexű tömbelemet értékét
?>
fel...
asszociatív tömbök
Az asszociatív tömb elemeinek kulcsa egy karaktersor (string) lehet, a tömbelemek értéke pedig a tárolni kívánt adatunk.
Tömb létrehozása: Asszociatív tömböt is kétféle módon hozhatunk létre:
1. Az array()tnyelvi elem segítségével, amely számos vesszővel elválasztott kulcs => érték párt vár. <?php
$egy_tomb = array ("1.kulcs" => "1.érték", "2.kulcs" => "2.érték");
?>
Ez egy konkrét példában így néz ki: <?php
$egy_tomb = array ( "nev" => "Kiss Béla",
"cim" => "Nekeresdfalva",
"tel" => "06 20/123 456");
?>
2. Létrehozhatunk tömböt közvetlen értékadással is: <?php
$egy_tomb["nev"] = "Kiss Béla";
$egy_tomb["cim"] = "Nekeresdfalva";
$egy_tomb["tel"] = "06 20/123 456";
?>
Az egyes elemek elérése és törlése már hasonlóan működik, mint az egyszerű (numerikus) tömböknél.
Egy tömb egyszerre tartalmazhat számokkal és karaktersorokkal indexel tömböket is - ezeket asszociatív tömbökként kezelhetjük.
fel...
rekurzív (többdimenziós) tömbök
A PHP rugalmasságát mutatja, hogy egy tömbelem maga is lehet egy másik tömb. Ezzel - akár több szint mélységig - összetett adatszerkezetet is leírhatunk (hacsak magunk bele nem kavarodunk ;-) Így hozhatunk létre egy többdimenziós tömböt: <?php
$fo_tomb = array ( array("egy" => "valami", "ketto" => "akármi", "harom" => "bármi"),
"valami szöveg",
array("piros", "kék", "zöld", 15, 21) );
?>
Természetesen betehetünk egy már korábban definiált tömböt is egy másik tömbbe: <?php
$belso_tomb = array("egy" => "valami", "ketto" => "akármi", "harom" => "bármi");
$fo_tomb = array ( $belso_tomb,
"valami szöveg",
array("piros", "kék", "zöld", 15, 21) );
?>
Itt is elérhetünk minden tömbelemet önállóan is. Írjuk most ki például azt a tömbelemet, aminek a példában "akármi", utána azt, aminek "piros" értéket adtunk: <?php
print ($fo_tomb[0]["ketto"]); // kiírja, hogy akármi
print ($fo_tomb[2][0]); // kiírja, hogy piros
?>
Látjuk tehát: ez a fentebb látott szögetes zárójeles meghatározás, csak mivel itt két egymásba helyezett tömbről van szó, két zárójelre van szükség, amelyek kívülről befelé haladó sorrendben választják ki a keresett tömbelemet.
Gyakori feladat, hogy egy tömb összes elemét kell kilistázni. Erre kiválóan alkalmasak a ciklusok, mint vezérlési szerkezetek.
A tömbökkel is számos műveletet lehet végezni a PHP beépített függvényei, vagy az általunk írt függvények segítségével. Erre néhány gyakorlati példát itt találsz. (ez még nincs kész...) |