Ugrás a főoldalra!

Felhasználónév:

Jelszó:

 :: ".$_ASWC_['NAME']." ".$_ASWC_['VERSION']." ".$_ASWC_['STATUS'];?> - [Látogatók: ]  
Freelance Jobs

Témaköreink

 


On-line

Dev, Admin: 0
Lektorok, írók: 1
  ÷Magus|BOT
Felhasználók: 0
Vendégek: 1
Tegnap: 0
E havi:
 

Statisztika

Oktatóanyagok száma
 Publikus: 128

Legolvasottabb írónk
 outesticide 362950

Legszorgalmasabb írók
1. balymo 24
2. outesticide 20
3. tipli 19
4. adrob 18
5. akciolap 15

Legolvasottabb címek
1. CSS
Egyszerü vízszintes menü és vízszintes menü legördülő almenükkel [55308]
2. CSS
Bevezetés a CSS alapjaiba [30803]
3. CSS
A pozícionálás, és a z-index [30287]
4. CSS
A felhasználói felület - első rész [24631]
5. CSS
Függőleges menü, legördülő almenüvel [24500]
 

 

PHP -> Változók és vezérlési szerkezetek

Író: Magus ( netoktato@orseolo.hu )
  http://orseolo.hu
Készült: 2007-03-03 11:14:12
Lektorálta: adrob
Lektorálva:
2007-03-03 12:46:17 [9503]
Változók és vezérlési szerkezetek

Az első cikkben egyetlen parancsot ismertünk meg, az az ECHO volt. Az echo segítségével lehet a weblapra írni. Kezdésként végig kell néznünk a legfontosabb parancsokat, szerkezeti egységeket, változótípusokat.

1. Változók



Minden változót a $ jellel kezdünk (pl. $valtozo="béka"; echo $valtozo;). Kivételt képeznek ez alól a konstansok (pl. define("konstans","123456"); echo konstans;).

Ha a nyelv kikényszeríti a típushoz tartózó szabályok végrehajtását (ez általában a típuskonverziók végrehajtását jelenti, lehetőleg információ vesztés nélkül), akkor a nyelv erősen típusos, ellenkező esetben gyengén típusos. Nos a PHP az egy gyengén típusos nyelv. A változókat nem kell előzetesen deklarálni (létrehozni, és megmondani a leendő típusát), és egyazon változó felvehet tetszőleges típusú értéket. A típuskonverzió sem igényel (minden esetben) külön eljárást.

$a=12;
$b=$a." lepke száll a réten.";


A PHP rendszer az alábbi alaptípusokat támogatja:
- egész --> $a = -455;
- valós --> $b = 98.56;
- karakterlánc --> $c = "alma";


A szöveges változók lehetnek egy vagy több karakter hosszúak. A szöveges kifejezéseknél két szöveges kifejezés összefűzhető a "." (pont) operátorral:

$b = "fa";
$c = "alma" . $b ; // almafa


A változók a skalár érték mellett tömb típusúak is lehetnek. A tömb kezelés egyedi vonása, hogy tömb létrehozása az elemeinek a megadásával történik, nem előzetes helyfoglalással.
A tömbelemek indexe az egész típusú értékek mellett lehet asszociatív, mikor egy szöveges kifejezés adja meg az index értékeket:

$b[1] = 3;
$b[2] = "lepke";
$b["alma"] = 4;


Többdimenziós tömbök esetében a C szintaktikát követve minden dimenziónál külön szögletes zárójelben adjuk meg az indexértéket:

$a[1][2] = 3;


A változókat, mint a példákból is láthattuk, nem kell előre definiálni, s típusukat ezért az értékadás határozza meg. Azonban a PHP figyelmeztetést küldd, ha egy olyan változót próbálunk használni, aminek előzetesen még nem adtunk értéket.

$a=1;
$c=$b+$a; // ekkor figyelmeztet, hogy nem ismeri $b-t


Ellenőrizhetjük, hogy az adott változót használtuk-e már:
$a=1;
$b=2;
if (isset($c)) $d=$c+$b+$a; // az isset-tel megvizsgáltuk, hogy létezik-e $c, ha létezik, használjuk
else $d=$b+$a; // ha nem létezik, nem használjuk


Egyazon változóhoz egymás után más és más típusú kifejezés is rendelhető, ezért annak típusa a program futása során dinamikusan, menet közben megváltozhat.

$a=5;
$a=$a.". elem"; // 5. elem


Változók összefűzésére több lehetőség is kínálkozik:
$szoveg="van "; // van
$szoveg=$szoveg."hátralévő "; // van hátralévő
$szoveg="$szoveg életed "; // van hátralévő életed
$szoveg.="első napja."; // van hátralévő életed első napja
$szoveg=."Ma "; // Ma van hátralévő életed első napja


2. Vezérlőszerkezetek



2.1. Elágazások, feltételek



2.1.1. IF



A változók taglalásában már használtunk egy IF–et, hogy eldöntsük, az adott változó létezik-e. Az If működése:

if (feltétel) { // ha a feltétel kiértékelése igaz
    # utasítás(ok)
}
elseif (feltétel 2) { // ha az előző nem igaz, de ez igaz
    # utasítás(ok)
}
else { // ha egyik sem volt igaz
    # utasítás(ok)
}


Az IF vezérlőszerkezet roppant egyszerű, és minden programozási nyelvben megtalálható.

2.1.2. SWITCH



A SWITCH kifejezés pontos megértéséhez a php.net hivatalos manual-ját vettem alapul!

A switch kifejezés hasonló egy sereg IF kifejezéshez, ahol a kifejezésekben ugyanaz szerepel. Gyakori, hogy ugyanazt a változót (vagy kifejezést) kell összehasonlítani több különböző értékkel, és más-más kódot végrehajtani a változó (kifejezés) értékétől függően. Erre való a switch.

Megjegyzés: Néhány más nyelvvel ellentétben, a continue utasítás használható switch-ben és ugyanúgy működik mint a break. Ha van egy switch egy cikluson belül, és a ciklusban szeretnél továbblépni, a continue parancsot kell kiadnod.

Nézzünk egy páldát IF-fel:
if ($i == 0) {
    echo "i most 0";
}
elseif ($i == 1) {
    echo "i most 1";
}
elseif ($i == 2) {
    echo "i most 2";
}


Ugyanez switch-el:
switch ($i) {
    case 0:
        echo "i most 0";
        break;
    case 1:
        echo "i most 1";
        break;
    case 2:
        echo "i most 2";
        break;
}


A switch-ben nem csak számok, hanem string-ek is ellenőrizhetők:
switch ($string) {
    case "alma":
        echo "most alma";
        break;
    case "körte":
        echo "most körte";
        break;
}


A hibák elkerülése végett fontos megérteni, hogy hogyan kerül végrehajtásra a switch szerkezet. A switch utasításról utasításra hajtódik végre. Nem hajtódik végre semmilyen utasítás, csak akkor, ha egy olyan case kifejezést talál a PHP, amely egyezik a switch kifejezés értékével. Ezután a PHP addig folytatja az utasítások végrehajtását, amíg el nem éri a switch blokk végét, vagy nem találkozik egy break utasítással.

FONTOS! Ha nincs break egy case-hez tartozó utasítás(sorozat) végén, akkor a PHP végrehajtja a soron következő case-hez tartozó utasításokat is!

A switch kifejezésben a feltétel csak egyszer értékelődik ki és a kapott eredmény lesz összehasonlítva a case kifejezések mindegyikével. Ha elseif kifejezéseket használsz, a kifejezések újra és újra kiértékelődnek. (és újra és újra be kell gépelni. Ez nem csak fárasztó, de hiba forrása is lehet.) Ha a kifejezés bonyolult, vagy egy ciklus belsejében van, a switch a gyorsabb.

Egy különleges eset a default [alapértelmezett] címke. Ez a címke bármivel egyezik, amivel a korábbi case elemek nem egyeztek. Ennek kell az utolsó elemnek lennie. Például:

switch ($i) {
    case 0:
        echo "i most 0";
        break;
    case 1:
        echo "i most 1";
        break;
    case 2:
        echo "i most 2";
        break;
    default:
        echo "i se nem 0, se nem 1, se nem 2";
}


A case kifejezés tetszőleges kifejezés, aminek egyszerű a típusa, vagyis egész vagy lebegőpontos szám, vagy string. Tömbök és objektumok itt nem használhatók, csakis egy-egy elemük ill. változójuk egyszerű típusként. (pl.: $tomb['elem'])

2.2. Ciklusok



2.2.1. WHILE



A legegyszerűbb ciklus: WHILE.

Ez egy előltesztelős ciklus. A PHP mindaddig ismétli az utasításokat, amíg a feltétel kiértékelése igaz.

$a=3;
while (strlen($a) < 3) {
    $a="0".$a;
}


Ez egy remek példa, mert egyszerre 2 különböző témára is illik. Elsősorban most a while ciklus miatt nézzük, ám ehhez egy másik tulajdonágát is tudni kell, az pedig az strlen() függvény bemutatása. Az strlen() függvény magadja a változó hosszát, azaz, hogy hány karakterből áll.

$apple="alma";
$length=strlen($apple); // $length = 4


Térjünk vissz a while magyarázatára. A fenti kód értelmében a PHP addig fog futni, amíg $a hossza kisebb, mint 3, tehát a futás befejeztével $a 3 karakter hosszú lesz, jelen esetben "3" helyett "003" lesz az értéke.

2.2.2. DO-WHILE



A while párjának tekinthető a DO-WHILE ciklus, mely ellentétben a while-al, hátultesztelős, azaz előbb lefuttatja az utasításokat, majd utána értékeli ki a feltételt.

$i = 0;
do {
    echo("");
} while ($i > 1);


Lévén, hogy a do-while (Pascalban repeat until) hátul tesztelős, ezért egyszer tuti lefut. És mivel a példámban $i > 1 nem teljesül, mert 0 nem nagyobb 1-nél, ezért az első futás után ki is lép a ciklusból. A do-while ciklus a gyakorlatban nem igazán használatos.

2.2.3. FOR



A leggyakrabban használt ciklus, a fix lépésszámú ciklus, azaz a FOR. Ez a ciklus fix darabszámszor fogja lefuttatni a kódot. Tömbökön végigszaladni legtöbbször ezzel a legegyszerűbb.

for ($i=0; $i<count($tomb); $++) {
    echo "A tömb $i. eleme: ".$tomb[$i]."<br/>";
}


Itt megtanultunk még egy fontos függvényt, ez a count(), mellyel egy tömb elemszámát lehet megtudni.

2.2.4. FOREACH



A PHP 4-től a Perlhez és más nyelvekhez hasonlóan létezik az ún. FOREACH szerkezet is. Ez jól használható eszközt ad a tömbökön végzett iterációkhoz. Más típusú vagy inicializálatlan változóra nem lehet használni, azokra hibát jelez. Két szintaxisa létezik, a második egy apró, de annál hasznosabb kiegészítéssel nyújt többet az elsőhöz képest.

// egyszerű
foreach ($tomb as $ertek) {
    # utasítások
}
// bővített
foreach ($tomb as $kulcs => $ertek) {
    # utasítások
}


Az első forma végigmegy a $tomb tömbön. Minden alkalommal az aktuális elem értéke a $ertek változóba kerül, és a belső tömb mutató növelésre kerül. (A következő alkalommal tehát a soron következő elemet fogja venni).

A második forma ugyanezt végzi el, de az aktuális elem kulcsa a $kulcs változóba kerül.

$tomb["nev"]="Mágus";
$tomb["e-mail"]="magus@netoktato.hu";

foreach ($tomb as $kulcs => $ertek) {
    echo "$kulcs = $ertek<br/>";
}


A program futását követően a következőt kapjuk:
nev = Mágus<br/>
e-mail = magus@netoktato.hu<br/>


2.2.5. BREAK és CONTINUE



A FOR, FOREACH, WHILE, DO-WHILE és SWITCH szerkezetekből kilépni idő előtt a BREAK utasítással lehet. A break elfogad egy elhagyható szám paramétert, amely megadja, hogy hány egymásba ágyazott struktúrából kell egyszerre 'kiugrani'.

A CONTINUE ciklusok belsejében használható arra, hogy átugorjuk az aktuális iteráció hátralevő részét, és a végrehajtást a feltétel-kiértékeléssel, majd a következő iterációval folytassuk.

A PHP-ben a switch utasítást a continue definíciója miatt a ciklus utasítások közé sorolják.

A continue elfogad egy elhagyható szám paramétert, amely megadja, hogy hány egymásba ágyazott struktúrának a hátralévő részét kell átugrani.

3. Azonosító



Ehhez a cikkhez most nem tartozik letölthető anyag.

4. Előzetes a 3. cikkből



Az első cikkben megismerkedtünk a PHP nyelv rövid történetével, most már tudjuk, mi fán terem a PHP, valamint személyi számítógépünkből webszervert varázsoltunk. A második cikkben megismerkedtünk, az általánosan ismert vezérlési szerkezetek, ciklusok miként néznek ki a PHP-ban, milyen változókat és miként kezelhetünk.

Mostani, harmadik (egyben a regisztráció nélkül megtekinthetőek közül az utolsó) cikkünkben rátérünk a tényleges programozásra. A parancsok részletezésére csak végszükség esetén térek csak ki, ez ügyben mindenkinek ajánlom a PHP hivatalos manual-ját: http://www.php.net/manual/hu/index.php.

Elsőként tekintsük át, mit is szeretnénk elkészíteni, ahhoz milyen előismeretek, valamint milyen alkotóelemek szükségesek, és mindezt milyen ütemben kívánjuk elvégezni.

A ...

Folytatás a következő cikkben!
2007.03.03. Mágus
* Minden további kérdéseddel fordulj az anyag írójához.

 

Hello Vendég

Az oktatóanyagok olvasásához be kell jelentkezned.

Szeretnék regisztrálni.

Elfelejtettem a jelszavam!
Kiküldöm magamnak!