Taigi, mes jau žinome, kaip vykdyti kodą, atitinkantį tam tikra sąlyga. Tačiau iki šios akimirkos galėjo būti tik viena sąlyga. Ką daryti, jei kodas turi būti vykdomas, jei vienu metu tenkinamos kelios sąlygos?

Norėdami išspręsti šią problemą, yra loginiai operatoriai:

= 5 ir& $ kaina<= 10) echo "Это число находится между 5 и 10"; ?>

&& operatorius, taip pat vadinamas logiška IR, konvertuoja reikšmes kairėje ir dešinėje į Būlio tipą, o tada pati grąžina Būlio reikšmę: true, jei kairė ir dešinė yra teisingos, arba false, jei viena iš sąlygų yra klaidinga.

Kitaip tariant, jei abi sąlygos yra teisingos, tada && operatorius grąžina true. Tai atspindi operatoriaus pavadinimas.

Operatorius || arba logiškas ARBA

grąžina tiesa, kai yra bent viena iš dviejų sąlygų:

5 || 1 > 2) echo "Sąlyga įvykdyta."; ?>

Aukščiau pateiktame kode echo komanda bus vykdoma, nes viena iš sąlygų yra teisinga.

Visi PHP loginiai operatoriai

Tarp && ir ir operatorių, taip pat tarp ||

ir arba yra nedidelis skirtumas – vykdymo tvarka.

Kaip žinote, daugyba turi didesnį prioritetą nei sudėtis. Taigi, ir ir arba operatoriai turi mažesnį prioritetą nei priskyrimo operatorius =. Rezultatą galima pamatyti šiame pavyzdyje:

Keista, tiesa? Kadangi y = turi didesnį prioritetą, PHP interpretuos kodą taip:

($var = true) ir false;

  • Tie. pirmiausia nustato $var į true, o tada atlieka teisingą ir klaidingą operaciją, kuri yra beprasmė, nes neturi įtakos kintamojo vertei.
  • * / %
  • + - .
  • < <= > >=
  • == != === !== <> <=>
  • Žemiau yra lentelė su operatoriaus prioritetais. Kai kuriuos iš jų jau sutikote. Kuo aukščiau operatorius yra lentelėje, tuo didesnis jo prioritetas.
  • = += -= *= **= /= .= %= &= |= ^= <<= >>=

++ -- ~ (int) (plūduriuoti) (eilutė) (masyvas) (objektas) (bool) @


? : (trečias operatorius) Dabar galime nustatyti, kad palyginimo operatorių (==, != ir kt.) pirmenybė yra didesnė nei loginių operatorių. Ši informacija mums bus naudinga atliekant užduotį. Svarbiausia imtis veiksmų operatoriaus duomenys– tai sąlyga. jei išvertus iš anglų kalbos reiškia

Jeigu
. Sąlyga priimama kaip argumentas (kas yra skliausteliuose). Sąlyga gali būti loginė išraiška arba loginis kintamasis. Paprasčiau tariant, posakio reikšmė bus tokia:
}
Jei (sąlyga) (
{
sąlyga įvykdyta, padarykite tai
}
kitaip

sąlyga neįvykdyta, darykite kitaip
Tikiuosi, kad sąlyginio veikimo logika aiški. Dabar pažiūrėkime į pavyzdį.

// Dabar dėmesio! Sąlyga: jei $b yra didesnis nei $a
// Ženklai > ir< , как и в математике, обозначают больше и меньше
if($b > $a)
{
// jei sąlyga įvykdyta, atlikite šį veiksmą
echo "$b yra didesnis nei $a";
}
kitaip
{
// jei nevykdoma, tai tai
echo "$a yra didesnis arba lygus $b";
}
?>
Demonstracija Atsisiųskite šaltinius
Dėl to scenarijus bus išvestas 25 daugiau nei 5. Pavyzdys gana paprastas. Tikiuosi viskas aišku. Dabar siūlau apsvarstyti sudėtingesnę situaciją, kai turi būti įvykdytos kelios sąlygos. Kiekviena nauja sąlyga bus po pagrindinės sąlygos jei ()- pagalbinis, kuris rašomas kaip kitaip, jei (). Galų gale viskas bus kaip įprasta kitaip.

Užduotis: Testavimas atliekamas mokykloje. Scenarijus turi skaičiuoti balą, žinant kiekvieno pažymio gavimo sąlygas ir patį mokinio balą. Pažiūrėkime, kaip tai parašyti, ir nepamirškite perskaityti komentaro.

$testas = 82; // tarkime, kad mokinys parašė testą su 82 taškais

// parašykite pirmąją sąlygą penkiems
if($test > 90)
{
// jei sąlyga įvykdyta, atlikite šį veiksmą.
aidas „Reitingas 5“;
}
// && ženklas reiškia „ir, sąjunga“, kad sąlyga įvykdyta, jei abi yra teisingos
// tai yra, balas yra mažesnis nei 91 ir didesnis nei 80, tada 4. Kitu atveju sąlygos skaitomos toliau
kitaip jei ($ testas< 91 && $test > 80)
{
aidas „Įvertinimas 4“;
}
kitaip jei ($ testas< 81 && $test > 70)
{
aidas "Reitingas 3";
}
Jei (sąlyga) (
{
aidas „Turėtume dar kartą rašyti testą...“;
}
?>
Demonstracija Atsisiųskite šaltinius
Mūsų studentas, turintis laiko ir pailsėti, ir parašyti įprastą testą, gauna įvertinimas 4! Tikiuosi veikimo principas aiškus.

Taip pat galima trumpai įrašyti sąlyginės operacijos operaciją, kai veiksmo reikia tik tada, kai sąlyga yra įvykdyta.

$amžius = 19; // kintamasis su amžiumi

Jei ($ amžius > 17) (
echo "Štai! Aš galiu daryti ką noriu! Aš jau $ amžiaus!";
}
Gana gražus trumpos sąlyginės operacijos žymėjimo pavyzdys. kitaip rašyti nebūtina.

Palyginimo operatoriai PHP

Sąlyginės operacijos veikimo principas yra aiškus. Tačiau, kaip suprantate, yra daug daugiau palyginimo būdų. Pažvelkime į toliau pateiktą lentelę su palyginimo operatoriais.

Pavadinimo rezultato pavyzdys
$a == $b lygus tiesa, jei $a lygus $b
$a === $b Identiškas True, jei $a yra lygus $b ir abu kintamieji yra to paties tipo
$a != $b Nelygus True, jei $a nelygus $b
$a === $b Netapatus True, jei $a nėra lygus $b ir abu tipai nėra vienodi
$a > $b Didesnis nei teisingas, jei $a yra didesnis nei $b
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Didesnis arba lygus True, jei $a yra didesnis arba lygus $b
$a<= $b Меньше или равно True, если $a меньше или равно $b
Dabar pažvelkime į operatorius su pavyzdžiais:

// priešingai įpročiui = reiškia reikšmės priskyrimą kintamajam, o == yra lygus
jei ($a == 5)(
echo "$a yra 5"; // išspausdins "5 lygus 5"
) dar (
echo "$a nelygu 5";
}

Jei ($a != 6)(
echo "$a nelygu 6"; // išspausdins "5 nelygu 6". Būtinas neigimo atveju
) dar (
echo "$a kažkaip lygu 6";
}

// su daugiau ir mažiau manau viskas aišku. Todėl pavyzdys yra sudėtingesnis
jei ($a<= 6){
echo "$a yra mažesnis arba lygus 6"; // išspausdins "5 yra mažesnis arba lygus 6"
) dar (
echo "$a yra didesnis nei 6";
}

PHP loginiai operatoriai

Būna atvejų, kai vienoje sąlygoje reikia lyginti ne vieną kintamąjį, o du ar daugiau iš karto. Tam yra loginiai operatoriai.

Pavadinimo rezultato pavyzdys
$a ir $b Loginis "ir" TRUE, jei ir $a, ir $b yra TRUE.
$a arba $b Loginis "arba" TRUE, jei $a arba $b yra TRUE.
$a xor $b Išskirtinis "arba" TRUE, jei $a arba $b yra TRUE, bet ne abu.
! $a TRUE neigimas, jei $a nėra TRUE.
$a && $b Loginis "ir" TRUE, jei ir $a, ir $b yra TRUE.
$a || $b Būlio reikšmė "arba" TRUE, jei $a arba $b yra TRUE.
Tą jau pastebėjome operacijoms Ir Ir arba ar yra papildomų operatorių? Tai daroma siekiant suteikti pirmenybę sudėtingoms palyginimo operacijoms. Lentelėje loginiai operatoriai pateikiami prioriteto tvarka: nuo mažiausio iki didžiausio, tai yra, pavyzdžiui, || turi didesnį prioritetą nei arba.

Eikime toliau į pavyzdžius

$a = 5;
$b = 6;
$c = 7;

// sąlyga: jei 5 nėra lygus 6 (TRUE), o 6 nėra lygus 7 (TRUE)
jei ($a< 6 && $b != $c){
aidas "Tikrai taip!"; // išspausdins "Iš tiesų taip!" nes ABI sąlygos yra TIKROS
) dar (
aidas „Viena iš sąlygų netiesa“;
}

// sąlyga: jei 6 nėra lygus 6 (FALSE) ARBA 6 nėra lygus 7 (TRUE)
if ($b != 6 || $b != $c)(
aidas "Štai tiek!"; // parodys "Štai viskas!", nes bent VIENA iš sąlygų yra TEISINGA
) dar (
aidas „Abi sąlygos klaidingos“;
}

Trečias operatorius

Siūlau vėliau grįžti prie trijų dalių kodo klausimo. Negalėjau to nepaminėti, nes tai svarbus dizainas, kuris žymiai sumažina kodo dydį. Siūlau iš karto pažiūrėti kodą.

Kodo esmė:(būklė)? a reikšmė, jei teisinga: reikšmė a if false

Taigi sutrumpiname if teiginį. Tačiau ši operacija galioja tik priskiriant reikšmes kintamajam. Dabar pažvelkime į baigtą pavyzdį.

// Trinanio operatoriaus naudojimo pavyzdys
$settings = (tuščias($_POST["nustatymai"])) ? "Numatytasis" : $_POST["nustatymai"];

// Aukščiau pateiktas kodas yra panašus į kitą bloką naudojant if/else
if (tuščias($_POST["nustatymai"])) (
$settings = "Numatytasis"; // Jei nieko neperkeliama, palikite jį kaip „Numatytasis“
) dar (
$settings = $_POST["nustatymai"]; // Jei patvirtinta, tada $settings priskiriama išlaikyta reikšmė.
}
?>
Perskaitykite komentarus prie kodo ir viskas turėtų būti aišku.

Dėkojame už dėmesį!


PHP palaiko standartinius loginius operatorius AND ir && , OR ir || , ! (ne) ir XOR . Loginiai operatoriai leidžia palyginti dviejų operandų (reikšmės arba išraiškos) rezultatus, kad nustatytumėte, ar vienas ar abu pateikia teisingą, ar klaidingą, ir pasirinkti, ar toliau vykdyti scenarijų, atsižvelgiant į grąžintą reikšmę. Kaip ir palyginimo operatoriai, loginiai operatoriai grąžina vieną Būlio reikšmę – tiesa arba klaidinga, priklausomai nuo reikšmių abiejose operatoriaus pusėse.

Loginis ARBA (ARBA ir ||)

Loginis ARBA operatorius žymimas kaip OR arba || . Jis atlieka loginę ARBA operaciją dviem operandais. Jei vienas ar abu operandai yra teisingi, jis grąžina teisingą. Jei abu operandai yra klaidingi, jis grąžina klaidingą. Turbūt turite klausimą: kodėl jie padarė dvi vieno operatoriaus versijas? Dviejų skirtingų loginio ARBA operatoriaus variantų esmė ta, kad jie veikia skirtingais prioritetais.

Pirmiausia pažiūrėkime, kaip veikia operatorius ||. . Taigi, jei vienas ar abu jo operandai yra teisingi, jis grąžina teisingą . Jei abu operandai pateikia klaidingas reikšmes, jis grąžins false .

OR operatorius veikia taip pat kaip ir operatorius ||. su viena išimtimi, jei su priskyrimu naudojamas operatorius OR, jis pirmiausia įvertins ir grąžins kairiojo operando reikšmę, kitu atveju jis veikia lygiai taip pat, kaip ir operatorius ||. , t.y. jei vienas arba abu jo operandai yra teisingi, jis grąžina true . Jei abu operandai grąžina false, jis grąžins false .

Kad būtų aiškiau, kaip jie veikia, pateiksime tokį pavyzdį:

1 // Pirmiausia kintamajam priskiriama reikšmė false, o tada įvertinamas antrasis operandas // Prioritetinis veiksmas: ($var2 = false) arba true $var2 = false arba true;
echo $var2; // false nespausdinamas // ($var3 = 0) arba 3 $var3 = 0 arba 3;

aidas"

$var3"; // => 0 ?> Bet kokius palyginimus ir loginius operatorius galima sujungti į sudėtingesnes struktūras: Dar vienas dalykas, kurį verta paminėti

svarbus punktas

Loginis IR operatorius žymimas AND arba && . Jis atlieka loginę IR operaciją dviem operandais. Jis grąžina teisingą tada ir tik tada, kai abu operandai vertinami kaip tiesa. Jei vienas arba abu operandai grąžina false, operatorius grąžina false. Dviejų skirtingų operatoriaus „loginis IR“ versijų reikšmė yra tokia pati, kaip ir dviejų ankstesnių operatorių, būtent, kad jie dirba su skirtingais prioritetais.

Pirmiausia pažiūrėkime, kaip veikia && operatorius. Taigi, jei abu jo operandai yra teisingi, jis grąžina true . Jei bent vienas arba abu jo operandai grąžina false , jis taip pat grąžins false .

Operatorius AND veikia taip pat, kaip ir && operatorius, išskyrus vieną išimtį, jei operatorius AND naudojamas su priskyrimu, jis pirmiausia įvertins ir grąžins kairiojo operando reikšmę, kitu atveju jis veikia lygiai taip pat, kaip ir && operatorius. Jei bent vienas iš jo operandų grąžins false, jis taip pat grąžins false, o jei abu operandai grąžins false, grąžins false.

Norėdami suprasti, pažiūrėkime, kaip tai veikia praktiškai:

$bar3"; // => 9 ?>

Išskirtinis OR (XOR)

Išskirtinis ARBA operatorius žymimas kaip XOR. Jis grąžina teisingą, jei tik vienas iš operandų yra teisingas. Jei abu operandai yra teisingi, operatorius grąžins false.

Kadangi operatorius XOR turi tokią pat pirmenybę kaip ir operatoriai AND ir OR (mažesnis nei priskyrimo operatorius), ir jis naudojamas priskyrimo išraiškoje, pirmiausia jis įvertina ir grąžina kairiojo operando reikšmę.

6 $a1 = 19 x arba 5 > 6;< 3) xor (5 != 5)); // true ?>

var_dump($a1); // => 19 var_dump(true xor true); // false var_dump((2

Logiška NE (!)

Loginis operatorius NE, dar vadinamas neigimu, nurodomas ženklu! . Tai vienkartinis operatorius, dedamas prieš vieną operandą. Loginis operatorius NOT naudojamas jo operando loginei vertei apversti ir visada grąžina true arba false .