...:::Programozz kedvedre!:::...
Menü
 
HTML
 
PHP
 
Tömbök

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...)

 
Bejelentkezés
Felhasználónév:

Jelszó:
SúgóSúgó
Regisztráció
Elfelejtettem a jelszót
 
XHTML
 
Linkek

Freewebsite
Programozás.lap.hu
Webmester.lap.hu

 

Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!    *****    A legfrissebb hírek a Super Mario világából és a legteljesebb adatbázis a Mario játékokról.Folyamatosan bõvülõ tartalom.    *****    Gigágá! Márton napján is gyertek a Mesetárba! Nemcsak libát, de kacsát is kaptok! Játsszatok velünk!    *****    A Nintendo a Nintendo Music-kal megint valami kiváló dolgot hozott létre! Alaposan nagyító alá vettem, az eredmény itt.    *****    Leanderek, Parfümök, Olajok, és Szépségápolási termékek! Használd a LEVI10 kupont és kapj 10% kedvezményt!Megnyitottunk    *****    Megjelent a Nintendo saját gyártású órája, a Nintendo Sound Clock Alarmo! Ha kíváncsi vagy, mit tud, itt olvashatsz róla    *****    Megnyílt a webáruházunk! Parfümök, Szépségápolási termékek, Olajok mind egy helyen! Nyitási akciók, siess mert limitált!    *****    Az általam legjobbnak vélt sportanimék listája itt olvasható. Top 10 Sportanime az Anime Odyssey-n!    *****    Pont ITT Pont MOST! Pont NEKED! Már fejlesztés alatt is szebbnél szebb képek! Ha gondolod gyere less be!    *****    Megnyílt a webáruházunk! NYITÁSI AKCIÓK! Tusfürdõ+Fogkrém+Sampon+Izzadásgátló+multifunkcionális balzsam most csak 4.490!    *****    Új mese a Mesetárban! Téged is vár, gyere bátran!    *****    Veterán anime rajongók egyik kedvence a Vadmacska kommandó. Retrospektív cikket olvashatsz róla az Anime Odyssey blogban    *****    Parfümök, Olajok, Párologtatók mind egy weboldalon! Siess mert nyitási AKCIÓNK nem sokáig tart! Nagy kedvezmények várnak    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!    *****    Aki érdeklõdik a horoszkópja után, az nem kíváncsi, hanem intelligens. Rendeld meg most és én segítek az értelmezésben!    *****    A Múzsa, egy gruppi élményei a színfalak mögött + napi agymenések és bölcseletek    *****    KARATE OKTATÁS *** kicsiknek és nagyoknak *** Budapest I. II. XII.kerületekben +36 70 779-55-77    *****    Augusztus 26-án Kutyák Világnapja! Gyertek a Mesetárba, és ünnepeljétek kutyás színezõkkel! Vau-vau!    *****    A horoszkóp elemzésed utáni érdeklõdés, nem kíváncsiság hanem intelligencia. Rendeld meg és nem fogod megbánni. Katt!!!    *****    Cikksorozatba kezdtem a PlayStation történelmérõl. Miért indult nehezen a Sony karrierje a konzoliparban?