Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/1)
Internet programozása 1. előadás
Áttekintés 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?
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
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/2)
3. A PHP 4 újdonságai Ú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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/3)
pl.: ConText Nagyobb webfejlesztő rendszerek. pl.: Macromedia Dreamweawer 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: Pl.: 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. Pl.: appserv http://www.appservnetwork.com 2006.10.06-ai utolsó verziója 2.5.7 –es.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/4)
Internet programozása 2. előadás
Áttekintés 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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(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:
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(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;
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/7)
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 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 ($).
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/8)
Internet programozása 3. előadás
Áttekintés 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:
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/9)
// ha a kifejezés értéke érték2 break; default: // ha a kifejezés értéke egyik felsorolt értékkel sem egyezett meg break; } 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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/10)
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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/11)
Internet programozása 4. előadás
Áttekintés 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 );
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/12)
vagy akár egy másik függvény visszatérési értéke is: Pl: return ( masik_fuggveny( $parameter ) ); 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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/13)
Internet programozása 5. előadás
Áttekintés 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. Pl.: $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. Pl.: $felhasznalok[] = "Berci"; $felhasznalok[] = "Mariska"; $felhasznalok[] = "Aladár"; $felhasznalok[] = "Eleonóra"; Pl.: $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. Pl.: $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()
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/14)
függvény vagy a szögletes zárójelek segítségével. Assz. tömbök létrehozása 01 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. Pl.: $karakter = array( "nev" => "János", "tevekenyseg" => "szuperhős", "eletkor" => 30, "kulonleges kepesseg" => "röntgenszem"); Pl.: 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. Pl.: $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. Pl.: $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. Pl.: $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. Pl.: $tomb = array("Ecc, pecc"); // Egyelemű tömb! $tomb[2] = "kimehetsz"; print "Az utolsó elem: " . $tomb[count($tomb)-1];
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/15)
Tömbök elérése 03 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) {} Pl.: $felhasznalok = array ("Berci", "Marci", "Ödön"); $felhasznalok[10] = "Télapó"; foreach($felhasznalok as $szemely) { print"$szemely
"; } 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.
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/16)
Pl.: tomb5.php $elso = array( "a", "b", "c" ); $masodik = array( 1, 2, 3 ); $harmadik = array_merge( $elso, $masodik ); foreach( $harmadik as $ertek ) { print "$ertek
"; } 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). Pl.: tomb6.php $elso = array( "a", "b", "c" ); $elemszam = array_push( $elso, 1, 2, 3 ); print "Összesen $elemszam elem van az \$elso tömbben
"; foreach( $elso as $ertek ) { print "$ertek
"; } 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. Pl.: 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. Pl.: tomb8.php
Andrikó Imre „Internet programozása” c. tárgy előadásain bemutatott prezentációjának nyomtatóbarát változata. NYF. 2007.
(17/17)
Műveletek tömbökkel 05 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. Pl.: $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. Pl.: $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. Pl.: $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.