Műveletek tömbökkel PHP-ban (Tömb létrehozása, elemek hozzáadása, felülírása, törlése, tömb hosszának megállapítása, elemeinek kiíratása)

Ebben a cikkben a tömbökkel végezhető műveletekkel fogunk megismerkedni PHP nyelv alatt, többek között a tömb létrehozásával, elemek hozzáadásával, felülírásával és törlésével.

Műveletek tömbökkel a PHP-ban (Tömb létrehozása, elemek hozzáadása, felülírása, törlése, tömb hosszának megállapítása, elemeinek kiíratása) című cikk borítóképe

Műveletek tömbökkel PHP-ban (Tömb létrehozása, elemek hozzáadása, felülírása, törlése, tömb hosszának megállapítása, elemeinek kiíratása)

Ebben a cikkben a tömbökkel végezhető műveletekkel fogunk megismerkedni PHP nyelv alatt. Bemutatjuk legalapvetőbb tömbműveleteket, mely a létrehozás, a tömbelem hozzáadás és felülírás, továbbá egy picit kevésbé alapvető műveleteket is, mint például a tömb hosszának megállapítása, az összes elem kiíratása vagy a tömb elemeinek törlése. Illetve mindezek előtt megvizsgáljuk, hogy mik is azok a tömbök és az indexek.

Mi az a tömb?

A tömb tulajdonképpen egy olyan speciális változó, amely egyidejűleg több elem tárolására képes. A WikiPédia így definiálja a tömböket: ,,A számítástudományban a tömb (angolul array) olyan adatszerkezet, amelyet nevesített elemek csoportja alkot, melyekre sorszámukkal (indexükkel) lehet hivatkozni.”

Mi az az index?

A fenti definícióban szerepelt egy olyan szó, hogy „indexükkel”, ezt akár úgy is írhatnánk, hogy „sorszámukkal”. Azonban a programozásban sokkal jobban elterjedt kifejezés az index.

JavaScript (JS) és PHP tömbök során használatos indexek magyarázata szemléletes példával, grafikával

A fent látható kép egy tömb felépítését próbálja ábrázolni. Van egy „nyelvek” nevezetű tömbünk, amelynek vannak elemei („HTML”, „CSS”, „JS”), ezeket az elemeket sorszámokkal (0, 1, 2) jelöljük, ezeket a sorszámokat nevezzük indexnek. Láthatjuk, hogy a tömbünk első eleme a “HTML”. Az informatikában a számozás nem egytől, hanem nullától kezdődik! Így az első sorszámunk nem 1, hanem 0 lesz. Azaz a “HTML” elemünket úgy tudjuk elérni, ha lekérjük a “nyelvek[]” tömb nulladik sorszámú, azaz indexű elemét.

Ha a “JS” után szeretnénk berakni egy újabb elemet a „nyelvek” tömbbe, mondjuk a “PHP”-t, akkor az utolsó elem után következő elemre kell hivatkoznunk, jelenesetben a 3. indexre.

Mikor és miért használjunk tömböt?

Akkor érdemes tömböt használnunk, amikor több összefüggő, egymással kapcsolatban álló adatunk van.

Vegyük például a PHP néhány verzióját, ezek a 7.3, a 7.4, a 8.0 és a 8.1.

Ha nem lennének tömbjeink, akkor ezeket az adatokat különböző változókban kellene tárolnunk. Ez így festene:

$verzio1 = 7.3;
$verzio2 = 7.4;
$verzio3 = 7.5;
$verzio4 = 8.0;
$verzio5 = 8.1; 
Code language: PHP (php)

Felmerülhet a kérdés sokakban, hogy alapvetően mi ezzel a gond? Hiszen a kód lefut, a változók léteznek, sőt bármelyik értéket le is kérdezhetjük.

Az igazi probléma, akkor van, amikor sokkal több adatunk van, akkor sokkal több időbe telne felvenni minden egyes adat számára egy külön változót. A másik probléma, ami talán még az elsőnél is súlyosabb, az az, hogy mi van, akkor, ha szeretnénk az összes verziószámot megvizsgálni? Írunk egy olyan feltételt, ami a vizsgálandó elemet összehasonlítja az összes változóval? Meglehetne oldani, de az is egy hosszú vagy bonyolult feltétel lenne.

Sokkal egyszerűbb, ha az összefüggő adatokat egy tömbben tároljuk el, hiszen egy tömb összes elemének a megvizsgálása viszonylag egyszerű feladat. Sokkal egyszerűbb és gyorsabb, mint különálló változók értékeit vizsgálgatni.

A fenti példa tömbként megvalósítva így néz ki:

$verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
Code language: PHP (php)

Tömb létrehozása PHP nyelvben

Ahogy fentebb már látható a PHP nyelvben egy tömb létrehozásához az array() kulcsszót kell használni.

Szintaxis

array(TÖMBELEM1, TÖMBELEM2, TÖMBELEM3 ...);
Code language: PHP (php)

Tetszőleges tömbelemet vehetünk és tölthetünk fel adattal. Arra kell odafigyelni, hogy a létrehozott tömböt eltároljuk egy változóban, amelyet így tehetünk meg:

$TÖMBNÉV = array(TÖMBELEM1, TÖMBELEM2, TÖMBELEM3 ...);
Code language: PHP (php)

Példa tömb létrehozására PHP-ban

PHP kód

<?php
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
?>
Code language: HTML, XML (xml)

Eredmény

Megjegyzés: A tömblétrehozásnak alapvetően nincs kimeneti (output) értéke, azaz grafikusan semmi sem jelenik meg a képernyőn. Mindezek ellenére a háttérben létrejött a tömb.

Tömb elemeinek lekérdezése, kiíratása PHP-ban

Az előző példában létrehoztunk egy tömböt, de nem láttunk belőle semmit. Szerencsére van lehetőségünk arra is, hogy lekérdezzük a tömb elemeit, amelyet akár ki is írathatunk.

Szintaktika

$TÖMBNÉV[TÖMBINDEX];
Code language: PHP (php)

Egy tömb elemét a fenti szintaxissal tudjuk lekérni, de még mindig nem fogjuk látni. Ahhoz, hogy lássuk ki kell íratnunk egy „echo„-val. Természetesen nem csak kiíratni tudjuk, hanem eltárolni egy változóban is, amelynek jelen pillanatban nem sok értelme lenne.

Példa tömb elemének kiíratására PHP-ban

PHP kód

<?php
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    echo $verziok[0] . "<br>";
    echo $verziok[1];
?>
Code language: HTML, XML (xml)

Eredmény

7.3
7.4


Megjegyzés: Ha nem fűznék „<br>”-t ponttal (.) a kiíratáshoz, akkor a két tömbelem szóköz nélkül egybeírva jelenne meg.

Tömbelem felülírása PHP-ban

Vannak olyan esetek, amikor szükség van arra, hogy utólag felülírjunk egy tömbelemet, szerencsére a PHP-ban erre is van lehetőségünk.

Szintaxis

$TÖMBNÉV[TÖMBELEM] = ÚJ.ÉRTÉK;
Code language: PHP (php)

Egy tömb elemét a fenti szintaxissal tudjuk lekérni, de még mindig nem fogjuk látni. Ahhoz, hogy lássuk ki kell íratnunk egy „echo„-val. Természetesen nem csak kiíratni tudjuk, hanem eltárolni egy változóban is, amelynek jelen pillanatban nem sok értelme lenne.

Példa tömb elemének kiíratására PHP-ban

PHP kód

<?php
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    echo "Előtte: " . $verziok[0] . "<br>";
    $verziok[0] = 7.2; // itt történik a felülírás
    echo "Utána: " . $verziok[0];
?>
Code language: HTML, XML (xml)

Eredmény

Előtte: 7.3
Utána: 7.2

Újabb elemek hozzáadása a tömbhöz

Az is egy gyakori eset, hogy egy újabb elemet szeretnénk hozzáfűzni a PHP tömbünkhöz.

Szintaxis

$TÖMBNÉV[] = ÚJ.ELEM;
Code language: PHP (php)

Egy tömb elemét a fenti szintaxissal tudjuk lekérni, de még mindig nem fogjuk látni. Ahhoz, hogy lássuk ki kell íratnunk egy „echo„-val. Természetesen nem csak kiíratni tudjuk, hanem eltárolni egy változóban is, amelynek jelen pillanatban nem sok értelme lenne.

Példa új elem hozzáadására tömbhöz PHP-ban

PHP kód

<?php
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    echo "Előtte: " . $verziok[5] . "<br>";
    $verziok[] = 7.2; // itt adok a tömbhöz egy új elemet
    echo "Utána: " . $verziok[5];
?>
Code language: HTML, XML (xml)

Eredmény

Előtte:
Utána: 7.2

Tömb hosszának megállapítása

Fentebb említettük, hogy egy tömb összes elemét nagyon könnyű megvizsgálni, ezt elsősorban annak köszönhetjük, hogy a PHP tartalmaz egy beépített függvényt, amely visszaadja a tömb hosszát, azaz azt, hogy hány elemet tartalmaz. Ha tudjuk a hosszát, akkor már nagyon könnyű egy ciklusban végigjárni az összes elemét.

Szintaktika

count($TÖMBNÉV);
Code language: PHP (php)

Ez a függvény csak a tömb hosszának kiszámítását és visszaadását oldja meg, a kiíratásról nekünk kell gondoskodnunk.

Példa count() használatára PHP-ban

PHP kód

<?php    
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    echo count($verziok);
?>
Code language: HTML, XML (xml)

Eredmény

5

Összes elem kiíratása

Az összes elem kiíratására több lehetőségünk is van, amikor csak szeretnénk látni, hogy hogyan fest egy tömb, azaz, hogy milyen indexen milyen elemek vannak, akkor elegendő a var_dump() függvény használata, azonban, ha valami mást is szeretnénk a tömb elemeivel csinálni, például vizsgálatokat végezni, akkor egy másik megoldásra lesz szükségünk.

var_dump() szintaxis

vardump($TÖMBNÉV);
Code language: PHP (php)

Egy tömb elemeit a fenti szintaxissal tudjuk lekérni.

Példa var_dump használatára PHP-ban

PHP kód

<?php
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    var_dump($verziok);
?>
Code language: HTML, XML (xml)

Eredmény

array(5) {
[0]=>
float(7.3)
[1]=>
float(7.4)
[2]=>
float(7.5)
[3]=>
float(8)
[4]=>
float(8.1)
}

A var_dump először is megmutatja, hogy hány elemű tömbről van szó, ezt jelöli az „array(5)”, majd elkezdi kilistázni az elemeit. A nulladik indexet [0]-val jelöli, majd jön a „=>” jelölés és az, hogy ezen az indexen milyen típusú (float) és értékkel bíró adat van. Természetesen a tömb összes elemét kilistázza.

Tömb összes elemének kiíratása úgy, hogy lehetővé tegyük a vizsgálatot

A var_dump egy kiváló megoldás abban az esetben, amikor csak önmagunkat szeretnénk ellenőrizni, hogy jól töltöttük-e fel adatokkal a tömböt. De nem alkalmas arra, hogy egyesével bejárjuk a tömb elemeit, sőt akár vizsgálatot tegyünk rájuk vonatkozólag.

Tömb bejárása foreach ciklussal

A foreach használata azért nagyszerű, mert használatával egy asszociatív tömböt is képesek vagyunk bejárni, azaz egy olyan tömböt, amely nem csak számmal leírt indexhelyén tartalmaz adatot, hanem olyan indexű helyeken is, amelyek számmal nem meghatározhatóak.

Példa összes elem kiíratására foreach ciklussal PHP-ban

PHP kód

<?php    
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);

    foreach ($verziok as $elem) {
        echo $elem . "<br>";
    }
?>
Code language: HTML, XML (xml)

Eredmény

7.3
7.4
7.5
8
8.1

Tömb bejárása while ciklussal

Ha nem asszociatív tömbünk van, azaz a tömbünkbe az összes elem olyan indexű helyen szerepel, ami számmal is leírható, akkor nyugodtan használhatunk más ciklusfajtát is, például while-t.

Ahhoz, hogy egyesével, elemről elemre járjuk be a tömböt egy while ciklussal, szükségünk lesz a fent tanult count()-ra, illetve ismernünk kell hozzá a ciklusokat is.

Példa összes elem kiíratására while ciklussal PHP-ban:

PHP kód

<?php    
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    $szamlalo=0; // készítünk egy számlálót, ezzel jelöljük, hogy melyik indexű elemnél járunk

    while($szamlalo<count($verziok)) // addig megy a ciklusunk, amíg a számlálónk kisebb, mint ahány elem van összesen
    {
        echo $verziok[$szamlalo] . "<br>"; // kiíratjuk a $verziok tömb $szamlalo indexű elemét
        $szamlalo++; // növeljük a számlálót
    }
?>
Code language: HTML, XML (xml)

Eredmény

7.3
7.4
7.5
8
8.1


A megoldás egy picit komplikáltnak tűnik és csak akkor használható, amikor indexált tömbről van szó, de valójában egy nagyon egyszerű kis megoldás arra, hogy kilistázzuk egy tömb összes elemét. Azért nagyon jó ez a megoldás, mert a ciklus belsejébe simán tehetünk vizsgálatokat és ahhoz köthetjük a kiíratást. Szóval így akár egy szétválogatást is megtudunk valósítani.

Nézzük meg akkor a fenti kódrészlet magyarázatát. Szóval van egy tömbünk kiindulásnak. Majd készítünk egy számlálót, amelyet nullától indítunk. Ezzel a számlálóval fogjuk nézni azt, hogy hanyadik elemnél járunk a tömbben.
A while ciklus addig megy, amíg a $szamlalo névre hallgató változónk értéke kisebb, mint a tömbünk elemeinek száma. Alapesetben 0 a számlálónk, a tömbünk hossza pedig 5. Szóval nulla kisebb, mint öt, így bemegyünk a ciklusba, ahol kiíratjuk a $verziok tömb $szamlalo indexű elemét, azaz a $verziok nulladik elemét, amihez hozzáfűzűnk egy sortörést, hogy a végeredmény jobban nézzen ki. Ezután növeljük a számlálót, hogy a következő ciklusvizsgálatnál a számláló már 1 legyen. Ilyenkor ezt vizsgálja meg a ciklus: 1<5? Ha igaz, akkor belép. Eljutunk addig, míg a számlálónk értéke négy lesz, kiíratjuk azt is, majd következik, hogy a számlálónk értéke 5. A ciklus fejében megvizsgáljuk, hogy öt kisebb-e, mint 5 vagy sem. Öt nyilvánvalóan nem kisebb, mint öt, mert ugyanannyi a két érték, így a program nem fog belépni a ciklusba, azaz végeztünk az elemek kiíratásával.

Tömb és tömbelem törlése PHP-ban

Természetesen lehetőségünk van arra is, hogy töröljünk egy tömbelemet vagy akár egy teljes tömböt is.

Szintaktika

unset(TÖMBNÉV VAGY TÖMBNÉV[TÖMBELEM]);
Code language: CSS (css)

Az unset függvénnyel van lehetőségünk tömbelemet vagy teljes tömböt törölni, a szintaxis csak annyiban tér el, hogy ha a teljes tömböt szeretnénk törölni, akkor nem kell indexet írnunk, míg ha csak egy konkrét elemet szeretnénk törölni, akkor jeleznünk kell, hogy melyik indexű elemet szeretnénk törölni.

Példa unset() használatára PHP-ban

PHP kód

<?php    
    $verziok = array(7.3, 7.4, 7.5, 8.0, 8.1);
    echo "Törlés előtt: ";
    echo var_dump($verziok[0]) . "<br>";
    unset($verziok[0]); // itt történik a törlés
    echo "Törlés után: ";
    echo var_dump($verziok[0]) . "<br>";
?>
Code language: HTML, XML (xml)

Eredmény

Törlés előtt: float(7.3)
Törlés után: NULL

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!