Mi a PHP? A PHP fejlődése A PHP 4 újdonságai Miért pont PHP? A programfejlesztés eszközei 1. Mi a PHP? Andrikó Imre Internet programozása c. tárgy előadásain Internet programozása 1. előadás Áttekintés (17/1) Egy makrókészlet volt, amely személyes honlapok karbantartására készült. (Personal Home Page Tools) Később a PHP képességei kibővültek, így egy önállóan használható programozási nyelv alakult ki. 2000. februárjában még csak 1,4 millió kiszolgálón használták 2000. októberére ez a szám 3,3 millióra ugrott. (www.netcraft.com) Jelenleg hivatalosan a Hypertext Prepocessor az elnevezése. Szerver (kiszolgáló) oldali programozási nyelv. 2. A PHP fejlődése A PHP első változatát - amely néhány webalkalmazás-készítést segítő makrót tartalmazott - Rasmus Lerdorf készítette 1994-ben. (Personal Home Page Tools) Később új elem került a csomagba, a Form Interpreter (Űrlapfeldolgozó), ezután PHP/FI lett a neve. PHP 3, ezt egy csapat fejlesztette. A teljes feldolgozó egység újjá lett alkotva, Zeev Zuraski és Andi Gutmans nevéhez fűződik. Apache és MySQL támogatás
3. A PHP 4 újdonságai Andrikó Imre Internet programozása c. tárgy előadásain (17/2) Új foreach vezérlési szerkezet, ami leegyszerűsíti a tömbökön végrehajtandó ciklusok készítését. Boolean (logikai) adattípus. A PHP 3-ban, a HRML űrlap elemeit tömbnevekkel láthattuk el, ez a szolgáltatás a többdimenziós tömbök támogatásával bővült. Fejlesztés az objektumközpontú programozásban. Felhasználói munkamenetek támogatása. (session) Két új összehasonlító operátor bevezetése (=== és!==), ezekkel értékek és típusok egyezését ill. nem egyezését ellenőrizhetjük. Beépített támogatás Java és XML nyelvekhez. A Zend Engine A programokat futtató mag elnevezése. A teljesítmény növelésére fejlesztették ki. PHP kódok fordítását teszi lehetővé. A PHP folyamatosan a memóriában van. Hihehetlenül gyors és hatékony. 4. Miért pont PHP? A fejlesztés sebessége (kódolási, tervezési, összeállítási szakasz elválasztása) Nyílt forráskódú Ingyenes Teljesítmény Hordozhatóság 4. Miért pont PHP? A szerveroldali szkriptek fejlesztése teljesen független a felhasználó által alkalmazott böngészőtől. A szerveroldali szkriptek forrásnyelvi változata nem olvasható a felhasználó böngészőjében. A letöltendő HTML dokumentum mérete csökken. A szerveroldalról leküldött HTML dokumentum a kliens gép környezetére alakítható. ZDNet (www.zdnet.com) sebességteszt eredményei, 1 másodperc alatt előállított oldalak számát tekintve: PHP 47 oldal ASP 43 oldal SUN Java JSP 13 oldal 5. A programfejlesztés eszközei PHP értelmező Szövegszerkesztő Webböngésző Webkiszolgáló Adatbáziskezelő PHP értelmező Az operációs rendszerünkhöz megfelelő PHP értelmező beszerzése. PHP hivatalos webhelye: http://www.php.net Ingyenesen letölthető. Szövegszerkesztő A PHP forrásprogram szerkesztésére szolgál, bármely szövegszerkesztő megfelelő hozzá: Jegyzettömb (Notepad) Ingyenes kódszerkesztők, melyek rendelkeznek kódszinezéssel és kifejezés-szerkesztővel.
pl.: ConText Nagyobb webfejlesztő rendszerek. pl.: Macromedia Dreamweawer Andrikó Imre Internet programozása c. tárgy előadásain (17/3) Webböngésző A PHP programok kimenetének a kliens gépen való megjelenítésére szolgál. Webböngészők: Microsoft Internet Explorer Opera Mozilla Firefox Netscape Navigator Webkiszolgáló Az Apache webkiszolgáló a legnépszerűbb nyílt forráskódú és platformfüggetlen webkiszolgáló. http://www.apache.org Ha saját számítógépünkre telepítjük, akkor a számítógépünk IP címe: 127.0.0.1 Neve: localhost Adatbáziskezelő Legelterjettebb adatbáziskezelő program a nyílt forráskódú, gyors és egyszerűen kezelhető: MySQL Az adatbázisrendszer webcíme: http://www.mysql.com Az webalapú adatbáziskezelő rendszer neve: phpmyadmin http://www.phpmyadmin.net Ingyenes szolgáltatók PHP-hez PHP programok futtatására alkalmas, ingyenes szolgáltatók: http://www.freeweb.hu http://www.ultraweb.hu Apache PHP - MySQL Vannak olyan programcsomagok, melyek egyben tartalmazzák a webkiszolgálót, a PHP értelmezőt és az adatbázisrendszert. appserv http://www.appservnetwork.com 2006.10.06-ai utolsó verziója 2.5.7 es.
Internet programozása 2. előadás Áttekintés (17/4) Mik a változók és hogyan használjuk azokat? Változók létrehozása és elérése. Adattípusok. Leggyakrabban használt műveletek. Kifejezések létrehozása műveleti jelek segítségével. Állandók meghatározása és használata. 1. Változók 01 A változók olyan tárolók, amelyeket abból a célból hoztunk létre, hogy értéket helyezzünk el bennük. A változók egy $ -ből és egy tetszőlegesen választott névből tevődnek össze. A név betűket, számokat, és aláhúzás karaktereket tartalmazhat (_), számmal azonban nem kezdődhet. Pl: $a $atmeneti $a_legkisebb_oszto 1. Változók 02 A változók adatokat számokat, karakterláncokat, objektumokat, tömböket, vagy logikai értékeket tárolnak, tartalmuk bármikor módosítható. Változó létrehozásához (deklarálásához) csak be kell írni azt a programunkba. Általában rögtön értéket is szoktunk adni nekik. Pl: $szam1 = 123; $szam2 = 4567; 2. Dinamikus változók A változó nevét is tárolhatjuk változóban. Pl: $felhasznalo = Kitti ; ez megegyezik ezzel: $tarolo = felhasznalo ; $$tarolo = Kitti ; A dinamikus változók elérése ugyanúgy történik, mint a hagyományos változóké. 3. Hivatkozás a változókra A PHP alapértelmezés szerint értékadáskor a változók értékeit használja, azaz ha az A változót hozzárendeljük egy B változóhoz, akkor a B változóba az A változó értékének másolata kerül. Az A változó tartalmának későbbi módosítása nincs semmiféle hatással a B változóra. PHP 4-ben ezt a viselkedésmódot megváltoztathatjuk. Kikényszeríthetjük, hogy a B változóba ne az A értéke kerüljön, hanem egy hivatkozás, amely az A változóra mutat. Jele: & 4. Adattípusok 01 A PHP 4 gyengén típusos nyelv, az adattípusokat úgy kezeli, mintha a típus az adathoz rendelt kiegészítő információ lenne. A PHP vegyes megközelítést használ, a változók rugalmasan használhatók, lehet bennük egyszer szám, másszor esetleg karakterlánc. De ez zavaró is lehet.
(17/5) 4. Adattípusok 02 4. Adattípusok 03 A változók típusának meghatározására a PHP 4 beépített gettype() függvényét használhatjuk. A változó típusának a módosítására pedig a settype() függvényt. Típus módosítása típusátalakítással: a változó neve elé zárójelbe írt adattípus segítségével érhetjük el. A settype() függvény és a típusátalakítás közötti különbség az, hogy az átalakítás során az eredeti változó típusa és értéke változatlan marad. 5. Műveleti jelek és kifejezések 01 A műveleti jelek (operátorok) olyan jelek, amelyek azon műveleteket jelzik, melyek lehetővé teszik, hogy egy vagy több értékből egy új értéket hozzunk létre. Az értéket, amellyel a műveletet végezzük, operandusnak hívjuk. Egy operátorhoz általában két operandus tartozik. Pl: 4 + 5 Az operandusok és operátorok együttesét kifejezésnek hívjuk. A PHP mindent, ami értéket határoz meg, kifejezésnek tekint. Pl: 123; $felhasznalo gettype() 5. Műveleti jelek és kifejezések 02 Hozzárendelés (=) Pl: $nev = Kis Kitti ; Aritmetikai műveletek:
(17/6) 5. Műveleti jelek és kifejezések 03 Összefűzés: jele a pont (.) Pl: Teszt. Elek a kifejezés értéke: Teszt Elek Az elemek típusuktól függetlenül karakterláncként értékelődnek ki és az eredmény is mindig karakterlánc. 5. Műveleti jelek és kifejezések 04 Összetett hozzárendelő operátorok Hozzárendelő (=) műveleti jelet minden aritmetikai és összefűző jelhez kapcsolhatunk. 5. Műveleti jelek és kifejezések 05 Összehasonlítás Az összehasonlító műveletek az operandusokon vizsgálatokat végeznek. Logikai értékkel térnek vissza. (true vagy false) Pl: $x = 4;
5. Műveleti jelek és kifejezések 06 Bonyolultabb összehasonlító kifejezések létrehozása logikai műveletek segítségével. Logikai műveletek: vagy or vagy xor kizáró vagy && és and és! tagadás (17/7) 5. Műveleti jelek és kifejezések 07 Egész típusú változók értékének növelése és csökkentése $x++; ugyanaz, mint: $x = $x + 1; vagy $x += 1; $x--; ugyanaz, mint: $x = $x - 1; vagy $x -= 1; Ha a növelő vagy csökkentő operátort feltételes kifejezésen belül használjuk, fontos, hogy az oprandus értéke csak a feltétel kiértékelése után változik meg: Pl: $x = 3; $x++ < 4; // igaz lesz 5. Műveleti jelek és kifejezések 08 Arra is szükség lehet, hogy a változó értéke kiértékelés előtt csökkenjen vagy nőjjön. ++$x; // $x értéke eggyel nő --$x; // $x értéke eggyel csökken A változó értékének módosítása a vizsgálat előtt történik meg: Pl: $x = 3; ++$x < 4; // hamis lesz 5. Műveleti jelek és kifejezések 09 A műveletek kiértékelési sorrendje! ++ -- (típusátalakítás) / * % + -. < <= >= > == ===!=!== && = += -= /= %=.= and xor or 6. Állandók Ha azt szeretnénk, hogy egy adott név alatt tárolt érték ne változzon a program futása során, létrehozhatunk állandókat (konstansokat) is. Ezt a PHP beépített define() függvénye segítségével tehetjük meg. Miután az állandót létrehoztuk, annak értékét nem tudjuk megváltoztatni. Pl: define( ALLANDO_NEVE, 234 ); Az állandó értéke lehet szám, karakterlánc vagy logikai típus. Nagybetűkkel szokás jelezni őket. A nevük nem tartalmaz dollárjelet ($).
Internet programozása 3. előadás Áttekintés (17/8) Hogyan használjuk az if szerkezetet arra, hogy bizonyos sorok csak adott feltételek teljesülése mellett hajtódjanak végre? Hogyan adhatunk meg csak bizonyos feltételek nem teljesülése esetén végrehajtandó műveleteket? A switch utasítás használata. A while utasítás. Ciklusok készítése a for utasítás segítségével? Hogyan lépjünk ki a ciklusokból? Hogyan ágyazzuk egymásba a ciklusokat? 1. Elágazások 01 Az if utasítás kiértékeli a zárójelek közötti kifejezést. Ha a kifejezés értéke igaz, az utasításhoz tartozó programrész végrehajtódik. Ha a kifejezés hamis, a blokk egyszerűen figyelmen kívül marad, és az else ág alatti utasítások hajtódnak végre. if ( kifejezés ) { utasítások; else { utasítások; 1. Elágazások 02 Az if utasítás elseif ága Mielőtt az else ágban alternatív kódrészt adnánk meg, több kifejezés értékétől függően, az if - elseif else szerkezet segítségével, a programmal mást és mást végeztethetünk. if ( feltétel ) { // ez a rész akkor fut le, ha a feltétel igaz elseif ( másik feltétel ) { // ez a rész akkor fut le, ha a másik feltétel // igaz, és minden előző feltétel hamis // itt még tetszőleges számú elseif rész következhet else { // ez a rész akkor kerül végrehajtásra, // ha egyik feltétel sem volt igaz 1. Elágazások 03 A switch utasítás egy lehetséges módja annak, hogy egy kódrészletet egy kifejezés értékétől függően hajtsunk végre. A program csak egy kifejezést vizsgál meg és annak értékétől függően különböző sorokat futtat. A kifejezésnek egyszerű típusnak kell lennie (szám, karakterlánc vagy logikai érték). switch ( kifejezés ) { case érték1: // ha a kifejezés értéke érték1 break; case érték2:
default: Andrikó Imre Internet programozása c. tárgy előadásain // ha a kifejezés értéke érték2 break; // ha a kifejezés értéke egyik felsorolt értékkel sem egyezett meg break; (17/9) 1. Elágazások 04 A?: operátor, háromoperandusú műveletjel. Egy olyan if utasításhoz hasonlít, amely értéket is képes visszaadni. A visszaadott értéket a vizsgált feltétel határozza meg: (feltétel)? érték1 : érték2 ; 2. Ciklusok 01 Segítségükkel elérhetjük, hogy egyes programrészletek ismétlődjenek. Szinte kivétel nélkül igaz, hogy egy ciklus addig fut, amíg egy feltétel teljesül, vagy meg nem mondjuk, hogy fejeződjön be az ismétlés. A while ciklus while ( feltétel ) { // valamilyen tevékenység Amíg a while feltétele igaz, a hozzá tartozó programrész újból és újból végrehajtódik. A programrészen belül általában megváltoztatunk valamit, ami hatással lesz a while feltételére; ha ezt nem tesszük meg, a ciklusunk a végtelenségig futni fog. 2. Ciklusok 02 A do..while ciklus Ebben a szerkezetben először hajtódik végre a kód és csak azután értékelődik ki a feltétel. do { // végrehajtandó programrész while ( feltétel ); Ez a ciklus akkor lehet hasznos, ha mindenképpen szeretnénk, hogy a ciklushoz tartozó programrész még akkor is legalább egyszer lefusson, ha a feltétel már az első végrehajtáskor hamis. 2. Ciklusok 03 A for ciklus for ( változó_hozzárendelése; feltétel; számláló_növelése) { // a végrehajtandó programblokk Az ezt megvalósító egyenértékű while: változó_hozzárendelése; while ( feltétel ) { // a végrehajtandó programblokk számláló_növelése; 2. Ciklusok 04 A for ciklusnál a zárójelekben levő kifejezéseket pontosvesszővel kell elválasztanunk egymástól. Az első kifejezés rendszerint egy számlálónak ad kezdeti értékét, a második egy feltétel, ami alapján eldől, hogy folytatódik-e a ciklus, a harmadik egy számlálót növelő utasítás. A for ciklus fejéből bármelyik kifejezés elhagyható, de figyelnünk kell arra, hogy a pontosvesszőket mindig kiírjuk.
2. Ciklusok 05 Ciklus elhagyása a break utasítás segítségével A while és for ciklusok lehetőséget biztosítanak arra, hogy egy beépített feltételes kifejezés segítségével kilépjünk belőlük. A break utasítás lehetővé teszi, hogy más feltételektől függően megszakítsuk egy ciklus futását. Következő ismétlés azonnali elkezdése a continue utasítás segítségével A continue utasítás segítségével az éppen folyó ismétlést befejezhetjük, mégpedig úgy, hogy ez ne eredményezze az egész ciklusból való kilépést, csak a következő ismétlés kezdetét jelentse. 2. Ciklusok 06 Egymásba ágyazott ciklusok A ciklusok törzsében is lehetnek ciklusok. Ez a lehetőség különösen hasznos, ha futási időben előállított HTML táblázatokkal dolgozunk. (17/10)
Internet programozása 4. előadás Áttekintés (17/11) Függvények létrehozása. Hogyan adjunk át a függvényeinknek értékeket és hogyan kapjuk meg tőlük az eredményt? Hogyan hívjunk meg függvényeket dinamikusan, változóban tárolt karakterlánc segítségével? Hogyan érjük el a függvényekből a globális változókat? Hogyan érjük el, hogy függvényeinknek emlékezete legyen? Hogyan adjunk át a függvényeknek hivatkozásokat? A függvény értékeket vesz át tőlünk, feldolgozza azokat és végez velük valamit (például kiírja az eredményt a böngészőbe) vagy visszaad egy értéket, esetleg mindkettőt. A függvény valójában egy zárt, önálló kódrészlet, melyet programunkból meghívhatunk. Amikor meghívjuk, a függvény törzse lefut. A függvénynek feldolgozás céljából értékeket adhatunk át. Amikor a függvény véget ér, a hívónak egy értéket ad vissza. A függvények lehetnek beépítettek vagy felhasználó által megadottak. Függvények hívása A PHP 4-ben rengeteg beépített függvény van. Pl: print ("Hello Web!"); vagy print "Hello Web!"; A paraméter a függvénynek átadott érték. A paramétereket a függvényhívás zárójelén belülre kell írnunk. Ha több paramétert kell átadnunk, az egyes paramétereket vesszővel kell elválasztanunk egymástól. A paraméterek a függvényeken belül helyi (lokális) változóként érhetők el. valamilyen_fuggveny ( $elso_parameter, $masodik_parameter ); Függvények létrehozása Függvényt a function kulcsszó segítségével hozhatunk létre: funcion valamilyen_fuggveny( $parameter1, $parameter2 ) { // itt van a függvény törzse A zárójelpárt akkor is ki kell írni, ha a függvény nem vesz át paramétereket. Függvények visszatérési értéke 01 A függvényeknek visszatérési értéke is lehet, ehhez a return utasításra van szükség. A return befejezi a függvény futtatását és az utána írt kifejezést küldi vissza a hívónak. A return segítségével értéket és objektumot is visszaadhatunk, vagy esetleg semmit. Ha semmit sem adunk meg a return után, az csak a függvény futtatásának befejezését eredményezi. Függvények visszatérési értéke 02 A visszatérési érték átadásának módja többféle lehet. Az érték lehet előre beégetett: PL: return 4; de lehet kifejezés eredménye: PL: return ( $a / $b );
vagy akár egy másik függvény visszatérési értéke is: Pl: return ( masik_fuggveny( $parameter ) ); (17/12) Dinamikus függvényhívások Lehetőségünk van rá, hogy karakterláncba tegyük egy függvény nevét és ezt a változót pontosan úgy tekintsük, mint ha maga a függvény neve lenne. A dinamikus függvényhívás akkor igazán hasznos, ha a program folyását bizonyos körülményektől függően változtatni szeretnénk. Például szeretnénk mást és mást csinálni egy URL-kérés paraméterétől függően. Ezt a paramétert feldolgozhatjuk és értékétől függően más és más függvényt hívhatunk meg. Változók hatóköre 01 A függvényben használt változók az adott függvényre nézve helyiek maradnak. Más szavakkal: a változó a függvényen kívülről vagy más függvényekből nem lesz elérhető. Hozzáférés változókhoz a global kulcsszó segítségével: Minden függvényben, amely globális változót szeretne elérni, használnunk kell a global kulcsszót. Ha a globális változót a függvényen belül megváltoztatjuk, annak a program egészére hatása lesz. Változók hatóköre 02 Állapot megőrzése a függvényhívások között a static kulcsszó segítségével: Ha egy függvényen belül egy változót a static kulcsszóval hozunk létre, a változó az adott függvényre nézve helyi marad. Másrészt a függvény hívásról hívásra emlékszik a változó értékére. Paraméterek további tulajdonságai 01 Paraméterek alapértelmezett értéke: A PHP nyelv remek lehetőséget biztosít számunkra rugalmas függvények kialakításához. Eddig azt mondtuk, hogy a függvények többsége paramétert igényel. Néhány paramétert elhagyhatóvá téve függvényeink rugalmasabbá válnak. Annyi elhagyható paramétert adhatunk meg, ahányat csak akarunk, de arra vigyáznunk kell, hogy az elhagyható paramétereknek a paraméterlista végén kell szerepelniük. Paraméterek további tulajdonságai 02 Hivatkozás típusú paraméterek: Amikor a függvényeknek paramétereket adunk át, a helyi paraméter-változókba a paraméterek értékének másolata kerül. Az e változókon végzett műveleteknek a függvényhívás befejeződése után nincs hatásuk az átadott paraméterekre. Lehetőségünk van arra is, hogy ne a változó értékét, hanem arra mutató hivatkozást adjunk át. Ezt cím szerinti paraméterátadásnak is hívják. Paraméterek további tulajdonságai 03 Ez azt jelenti, hogy a változóra mutató hivatkozással dolgozunk a függvényben és nem a változó értékének másolatával. A paraméteren végzett bármilyen művelet megváltoztatja az eredeti változó értékét is. Hivatkozásokat függvényeknek úgy adhatunk át, hogy az átadandó változó vagy a paraméter neve elé egy & jelet teszünk.
Internet programozása 5. előadás Áttekintés (17/13) Mik a tömbök, hogyan hozhatók létre? Hogyan érhetjük el a tömbökben tárolt adatokat? Hogyan rendezhetjük a tömbökben tárolt adatokat? Mi a tömb? A tömb változók listája. Több változót tartalmaz, amelyeket számok vagy karakterláncok segítségével azonosíthatunk, így a különböző értékeket egyetlen névvel tárolhatjuk, rendezhetjük és érhetjük el. A tömb elemeit az index segítségével könnyen elérhetjük. Az index lehet szám, de akár karakterlánc is. Alapértelmezés szerint a tömböket számokkal indexeljük, mégpedig úgy, hogy az első elem indexe 0. Ebből az következik, hogy az utolsó tömbelem indexe mindig eggyel kisebb a tömb méreténél. Tömbök létrehozása 01 A tömbök alapértelmezés szerint értékek számmal indexelt listái. Értéket egy tömbhöz kétféleképpen is rendelhetünk: Az egyik mód az array() függvény, a másik a tömbazonosító használata szögletes zárójelekkel ([]). Tömbök létrehozása 02 Az array() függvény akkor hasznos, ha egyszerre több értéket szeretnénk egy tömbhöz rendelni. $felhasznalok = array ("Berci", "Mariska", "Aladár", "Eleonóra"); print $felhasznalok[2]; Tömbök létrehozása 03 Tömböket úgy is létrehozhatunk, illetve meglevő tömbökhöz új elemeket adhatunk, ha a tömb neve után olyan szögletes zárójelpárt írunk, amelynek belsejében nincs index. $felhasznalok[] = "Berci"; $felhasznalok[] = "Mariska"; $felhasznalok[] = "Aladár"; $felhasznalok[] = "Eleonóra"; $felhasznalok[0] = "Berci"; $felhasznalok[200] = "Mariska"; Tömbök létrehozása 04 Tömbök létrehozása mellett a tömbváltozók szögletes zárójele segítségével az array() függvénnyel létrehozott tömb végéhez új elemet is adhatunk. $felhasznalok = array ("Berci", "Mariska", "Aladár", "Eleonóra"); $felhasznalok[] = "Anna"; Asszociatív tömbök 01 A karakterlánccal indexelt tömböket asszociatív tömböknek (néha hash-nek) hívják. Asszociatív tömbök létrehozása a számokkal indexelt tömbökkel megegyezően történik, az array()
függvény vagy a szögletes zárójelek segítségével. Assz. tömbök létrehozása 01 Andrikó Imre Internet programozása c. tárgy előadásain (17/14) Ha asszociatív tömböt szeretnénk létrehozni az array() függvény segítségével, minden elemnek meg kell adni a kulcsát és az értékét. $karakter = array( "nev" => "János", "tevekenyseg" => "szuperhős", "eletkor" => 30, "kulonleges kepesseg" => "röntgenszem"); print $karakter["eletkor"]; Assz. tömbök létrehozása 02 Asszociatív tömböt úgy is létrehozhatunk hogy új név-érték párt adhatunk hozzá, egyszerűen a megnevezett elemhez (mezőhöz) új értéket adunk. $karakter["nev"] => "János"; $karakter["tevekenyseg"] => "szuperhõs"; $karakter["eletkor"] => 30; $karakter["kulonleges kepesseg"] => "röntgenszem"; Többdimenziós tömbök Egy tömbelem valójában lehet érték, objektum vagy akár egy másik tömb is. A többdimenziós tömb valójában tömbök tömbje. $tomb[1][2] Tömbök elérése 01 Tömb méretének lekérdezése: A tömb bármely elemét elérhetjük indexének használatával. A tömbök rugalmassága miatt nem mindig egyszerű feladat kideríteni, hány elem van a tömbben. A PHP a count() függvényt biztosítja erre a feladatra. A count() a tömbben levő elemek számával tér vissza. $felhasznalok = array ("Berci", "Marci", "Ödön", "Télapó"); $felhasznalok[count($felhasznalok)-1]; Tömbök elérése 02 Semmi sem garantálja, hogy ezzel a módszerrel bármilyen (számokkal indexelt) tömb utolsó elemét megkapjuk. $tomb = array("ecc, pecc"); // Egyelemű tömb! $tomb[2] = "kimehetsz"; print "Az utolsó elem: ". $tomb[count($tomb)-1];
Tömbök elérése 03 Andrikó Imre Internet programozása c. tárgy előadásain (17/15) Tömb bejárása: Több módja van annak, hogy egy tömb minden elemét végigjárjuk. Mi most a PHP 4 igen hatékony foreach szerkezetét használjuk. foreach($tombnev as $atmeneti) { $felhasznalok = array ("Berci", "Marci", "Ödön"); $felhasznalok[10] = "Télapó"; foreach($felhasznalok as $szemely) { print"$szemely<br>"; Tömbök elérése 04 Ahol csak mód van rá, ne használjunk tömbindexeket. A tömböket sokszor csak egyszerű listaként használjuk, ahol nem számít az, hogy egy adott elemnek mi az indexe. A PHP a tömbök elérésére a tömbindexek használatánál hatékonyabb és áttekinthetőbb függvényeket biztosít, programunk ezáltal rugalmasabb, könnyebben módosítható és jól olvasható lesz. Tömbök elérése 05 Asszociatív tömb bejárása: Ha az asszociatív tömb kulcsát és értékét is el szeretnénk érni, egy kicsit másképpen kell a foreach szerkezet használnunk. foreach( $tomb as $kulcs => $ertek ) { // a tömbelem feldolgozása Tömbök elérése 06 Többdimenziós tömb bejárása: példa prg.: tomb4.php A kódot megbízhatóbbá tehetnénk, ha meghívnánk a $karakter változóra az is_array() függvényt. Az is_array() függvény számára egy paramétert kell megadnunk. A visszatérési érték true lesz, ha a változó típusa tömb, minden más esetben false értéket ad. Műveletek tömbökkel 01 Két tömb egyesítése: Az array_merge() függvény legalább két paramétert vár: az egyesítendő tömböket. A visszatérési érték az egyesített tömb lesz.
tomb5.php $elso = array( "a", "b", "c" ); $masodik = array( 1, 2, 3 ); $harmadik = array_merge( $elso, $masodik ); foreach( $harmadik as $ertek ) { print "$ertek<br>"; (17/16) Műveletek tömbökkel 02 Egyszerre több elem hozzáadása egy tömbhöz: Az array_push() függvény egy tömböt és tetszőleges számú további paramétert fogad. A megadott értékek a tömbbe kerülnek. Figyeljük meg, hogy az array_merge() függvénnyel ellentétben az array_push() megváltoztatja első paraméterének értékét. E függvény visszatérési értéke a tömbben lévő elemek száma (miután az elemeket hozzáadta). tomb6.php $elso = array( "a", "b", "c" ); $elemszam = array_push( $elso, 1, 2, 3 ); print "Összesen $elemszam elem van az \$elso tömbben<p>"; foreach( $elso as $ertek ) { print "$ertek<br>"; Műveletek tömbökkel 03 Ha a PHP-ben az array_push() második paramétereként tömböt adnak meg, a tömb egy tömb típusú elemmel bővül, ezáltal többdimenziós tömb keletkezik. Ha egy karakterláncban nem szeretnénk, hogy a változók behelyettesítődjenek, a karakterlánc jelölésére egyszeres idézőjeleket használjunk; ekkor a és a \ karakterek helyett \ -t és \\-t kell írnunk. Műveletek tömbökkel 04 Az első elem eltávolítása: Az array_shift() eltávolítja a paraméterként átadott tömb első elemét és az elem értékével tér vissza. tomb7.php Tömb részének kinyerése: Az array_slice() függvény egy tömb egy darabját adja vissza. A függvény egy tömböt, egy kezdőpozíciót (a szelet első elemének tömbbeli indexét) és egy (elhagyható) hossz paramétert vár. Ha ez utóbbit elhagyjuk, a függvény feltételezi, hogy a kezdőpozíciótól a tömb végéig tartó szeletet szeretnénk megkapni. Az array_slice() nem változtatja meg a paraméterként átadott tömböt, hanem újat ad vissza, amelyben a hívó által kért elemek vannak. tomb8.php
Műveletek tömbökkel 05 Andrikó Imre Internet programozása c. tárgy előadásain (17/17) Tömbök rendezése: Számmal indexelt tömb rendezése A sort() függvény egy tömb típusú paramétert vár és a tömb rendezését végzi el. Ha a tömbben van karakterlánc, a rendezés (alapbeállításban angol!) ábécésorrend szerinti lesz, ha a tömbben minden elem szám, szám szerint történik. A függvénynek nincs visszatérési értéke, a paraméterként kapott tömböt alakítja át. $tomb = array( "x", "a", "f", "c" ); sort( $tomb ); Ha csökkenő sorrendben szeretnénk rendezni egy tömb elemeit, használjuk a sort() függvényhez hasonlóan működő rsort() függvényt. Műveletek tömbökkel 06 Asszociatív tömb rendezése érték szerint: Az asort() függvény egy asszociatív tömb típusú paramétert vár és a tömböt a sort() függvényhez hasonlóan rendezi. Az egyetlen különbség, hogy az asort() használata után megmaradnak a karakterlánc-kulcsok. $a_tomb = array( "elso"=>5, "masodik"=>2, "harmadik"=>1 ); asort( $a_tomb ); Ha csökkenő sorrendben szeretnénk rendezni egy asszociatív tömb elemeit, használjuk a arsort() függvényt. Műveletek tömbökkel 07 Asszociatív tömb rendezése kulcs szerint: A ksort() a paraméterben megadott asszociatív tömböt rendezi kulcs szerint. A többi tömbrendező függvényhez hasonlóan ez a függvény sem ad vissza semmiféle visszatérési értéket, hanem a tömböt alakítja át. $tomb = array( "x" => 5, "a" => 2, "f" => 1 ); ksort( $tomb ); Ha csökkenő sorrendben szeretnénk rendezni egy asszociatív tömb elemeit, használjuk a krsort() függvényt.