PHP Operatoriai
Parašė N3PST3R 2006 spalio 26 21:10:27
PHP operatoriai
Šioje pamokoje aptarsime PHP kalboje egzistuojančius operatorius, kurie sudaro programos griaučius. Sąlygos operatoriai ir ciklai padeda išpręsti daug užduočių.

Sąlygos operatoriai
Sąlygos operatoriai leidžia rašyti kodą, kuris bus vykdomas tik esant kažkokioms sąlygoms. PHP kalboje yra dvi sąlyginės konstrukcijos.
Pirmoji iš jų yra if...elseif...else, leidžianti patikrinti keletą išsireiškimų ir vykdyti kodą, priklausomai nuo tų išsireiškimų reikšmės. Jeigu reikia palyginti vieną išsireiškimą su keletu reikšmių, tai PHP leidžia naudotis konstrukcija switch....case, atliakančia šią užduotį.

Operatorius if
Operatorius if yra viena iš svarbiausių galimybių visose programavimo kalbose.Jis leidžia vykdyti tam tikras kodo eilutes, tik esant nurodytoms sąlygoms. Operatoriaus if sintaksė:
if (sąlyga) {
....kodas...
}

Jeigu sąlygos sakinyje vykdome daugiau nei vieną kodo eilutę, kodą reikia apskliausti riestiniais skliaustais. Jei vykdome tik vieną eilutę, to daryti nėra būtina.
// šis kodas išves "Lietuva.", jei kinamojo $salis reikšmė bus "lt".
if ($salis == ā€œltā€¯)
echo(ā€¯Lietuva.ā€¯);
// šis kodas išves "Lietuva. Jos sostinė - Vilnius", jei kinamojo $salis reikšmė bus "lt".
if ($salis == ā€œltā€¯) {
echo(ā€¯Lietuva. ā€¯);
echo("Jos sostinė - Vilnius");
}
Operatoriuje if tikrinama sąlyga turi turėti loginio tipo(boolean) reikšmę true arba false. Bet kokia neįvykdoma sąlyga, nulis, tuščia eilutė, nenustatytas dydis ir PHP konstanta false turi reikšmę false. Pavyzdžiui, visi žemiau pateikti išsireiškimai turės reikšmę false:
if (5<4) echo ("Tai nebus išvesta");
if (false) echo ("Tai nebus išvesta"); //false yra PHP konstanta
if ("0") echo ("Tai nebus išvesta"); //Apdorojant eilutes, "0" virsta 0
if ($g) echo("Tai nebus išvesta"); //Tuo atveju jei $g nėra priskirta reikšmė
Dydis true yra ekvivalentus bet kokiai reikšmei, nelygiai nuliui, tuščiai eilutei, svarbu kad sąlyga bšti patenkinta. Ʋemiau pateikti išsireiškimai įgyja reikšmes true:
if ("false") echo ("Tai bus išvesta); // false jau yra nebe konstanta, o eilutė
if ("00") echo ("Tai bus išvesta); // eilutė iš dviejų nulių nėra perdirbama į sveikojo tipo reikšmę
if (0 ==0) echo ("Tai bus išvesta); // nulis lygus nuliui, todėl sąlyga patenkinta
Tačiau sąlygas galima padaryti ir sudėtingesnes, apjungiant kelias sąlygas loginiais operatoriais.
if (((4<5) && (3>2)) xor (5 == 5)) echo (ā€¯Tai išvesta nebusā€¯); // teisingos abi sąlygos, apjungtos operatoriusmi xor, todėl viso išsireiškimas neteisingas
Paneigtos sąlygos
Jeigu tikrinama sąlyga grąžina false, tai PHP leidžia nurodyti kitą kodo bloką, kuris bus vykdomas, panaudojant else sakinį. Pavyzdžiui:
if ($k < 0) {
echo (ā€¯Neigiamas skaičius);
} else {
echo (ā€¯Teigiamas skaičius);
}
Duotasis sakinys tikrina, ar kintamojo reikšmė mažesnė už nulį. Jei taip, tai išvedama ā€œNeigiamas sakičiusā€¯. Jei yra priešingai, išvedama ā€œTeigiamas skaičiusā€¯. Egzistuoja sakinys elseif, leidžiantis patikrinti alternatyvias sąlygas. Pvz.:
if ($k < 0) {
echo (ā€¯Neigiamas skaičius);
} elseif ($k ==0) {
echo (ā€¯Nulisā€¯);
} else {
echo (ā€¯Teigiamas skaičius);
}
Pavyzdyje pateikta konstrukcija tikrina, ar kintamojo reikšmė mažesnė už nulį. Jei taip, parašoma, jog tai neigiamas kaičius. Jei nepatenkinama pirmoji sąlyga, tikrinama, ar kintamais lygus nuliui. Jei taip, parašoma jog tai nulis. O jeigu nepatenkinama nei viena iš ankstesnių sąlygų, parašoma, jog tai teigiamas skaičius.

Operatorius switch
Tarikime, jog turime kintamajį $salis, kuriame yra saugomas sutrumpintas valsybės pavadinimas, tačiau mes norime išvesti pilną tos šalies pavadinimą. Jei darbą atliktume su konstrukcija if...elseif....else, tai atrodytų maždaug taip:
if ($salis== ā€œcaā€¯) {
echo (ā€¯Kanadaā€¯);
} elseif ($salis == ā€œcrā€¯) {
echo (ā€¯Kosta Rikaā€¯);
} elseif ($salis == ā€œdeā€¯) {
echo (ā€¯Vokietijaā€¯);
} elseif ($salis == ā€œukā€¯) {
echo (ā€¯Didžioji Britanijaā€¯);
} else {
echo(ā€¯JAVā€¯);
}
Šiame pavyzdyje, mes kiekvieną kartą lyginome kintamajį $salis su tam tikra reikšme ir priklausmai nuo to, išvesdavome reikšmę. Tai yra pakankamai neefektyvu. Tai galima ištaisyti, naudojant konstrukciją switch/case. Operatorius switch naudojamas tada, kai reikia vieną kintamajį palyginti su keliomis reikšmėmis.
switch($salis) {
case ā€œcaā€¯ :
echo (ā€¯Kanadaā€¯);
break;
case ā€œcrā€¯ :
echo (ā€¯Kosta Rikaā€¯);
break;
case ā€œdeā€¯ :
echo (ā€¯Vokietijaā€¯);
break;
case ā€œukā€¯:
echo (ā€¯Didžioji Brotanijaā€¯);
break;
default:
echo (ā€¯JAVā€¯);
}
Operatorius switch ima reikšmę iš kintamojo $salis ir lygina ją su reikšmėmis pateiktomis case sakiniuose. Kai randama sutampanti reikšmė, vykdomas kodas, kol randamas operatorius break. Jei nėra sutampančių reikšmių vykdomas default sakinyje parašytas kodas.
Na, o dabar smulkiau panagrinėsime operatorių break. Jis leidžia sustabdyti operacijas case operatoriuose. Jei $salis reikšmė yra cr, tai išvedama "Kosta Rika", ir operatorius break sustabdo tolesnį vykdymą. Jei break neegzistuotų, programa būtų vykdoma toliau ir į ekraną būtų išvesti visų likusių valstybių pavadinimai. Tai gali būti naudinga, bet gali ir pakenkti. Mūsų atveju, tai pakenkė. Tačiau šią problema gali mums padėti išspręsti kitą užduotį:. mes galime apjungti kelis operatorius case ir jei bent vieno iš jū reikšmė atitiks reikiamą, bus vykdomas kodas.
switch($salis) {
case ā€œcaā€¯ :
case ā€œcrā€¯ :
case ā€œusā€¯ :
echo (ā€¯Šiaurės Amerikaā€¯);
break;
case ā€œdeā€¯ :
case ā€œukā€¯ :
echo (ā€¯Europaā€¯);
break;
}
Jei kintamojo $salis reikšmė yra ca, cr arba us, tai į ekraną išvedama ā€œŠiaurės Amerikaā€¯, jeigu de arba uk, išvedama ā€œEuropaā€¯.