Kaya, alam na namin kung paano mag-execute ng code na naaayon sa tiyak na kondisyon. Ngunit hanggang sa sandaling ito maaari lamang magkaroon ng isang kondisyon. Paano kung ang code ay dapat isagawa kung maraming mga kundisyon ang natutugunan nang sabay-sabay?

Upang malutas ang problemang ito, mayroong mga lohikal na operator:

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

Ang && operator, tinatawag din lohikal AT, kino-convert ang mga halaga sa kaliwa at kanan sa isang uri ng Boolean, at pagkatapos ay nagbabalik mismo ng isang Boolean na halaga: true kung ang kaliwa at kanan ay totoo, o mali kung ang isa sa mga kundisyon ay mali.

Sa madaling salita, kung ang parehong kundisyon ay totoo, ang && operator ay nagbabalik ng totoo. Ito ang sinasalamin ng pangalan ng operator.

Operator || o lohikal O

nagbabalik ng true kapag totoo ang kahit isa sa dalawang kundisyon:

5 || 1 > 2) echo "Ang kundisyon ay natutugunan."; ?>

Sa code sa itaas, ang echo command ay isasagawa dahil ang isa sa mga kundisyon ay totoo.

Lahat ng lohikal na operator sa PHP

Sa pagitan ng && at at mga operator, gayundin sa pagitan ng ||

at o may kaunting pagkakaiba - ang pagkakasunud-sunod ng pagpapatupad.

Tulad ng alam mo, ang pagpaparami ay may mas mataas na priyoridad kaysa sa pagdaragdag. Kaya, ang at at o mga operator ay may mas mababang priyoridad kaysa sa assignment operator =. Ang resulta ay makikita sa sumusunod na halimbawa:

Kakaiba, tama? Dahil ang y = ay may mas mataas na priyoridad, bibigyang-kahulugan ng PHP ang code tulad nito:

($var = true) at mali;

  • Yung. itinatakda muna nito ang $var sa true at pagkatapos ay gagawa ito ng true at false na operasyon, na walang kabuluhan dahil hindi ito nakakaapekto sa halaga ng variable.
  • * / %
  • + - .
  • < <= > >=
  • == != === !== <> <=>
  • Nasa ibaba ang isang talahanayan na may mga priyoridad ng operator. Nakilala mo na ang ilan sa kanila. Kung mas mataas ang operator sa talahanayan, mas mataas ang priyoridad nito.
  • = += -= *= **= /= .= %= &= |= ^= <<= >>=

++ -- ~ (int) (float) (string) (array) (object) (bool) @


? : (ternary operator) Ngayon ay matutukoy na natin na ang precedence ng mga operator ng paghahambing (==, !=, atbp.) ay mas mataas kaysa sa mga lohikal na operator. Ang impormasyong ito ay magiging kapaki-pakinabang sa amin upang makumpleto ang gawain. Ang pangunahing bagay ay kumilos data ng operator- ito ay isang kondisyon. kung isinalin mula sa Ingles ay nangangahulugan

Kung
. Ang kundisyon ay tinatanggap bilang argumento (kung ano ang nasa panaklong). Ang kundisyon ay maaaring isang lohikal na pagpapahayag o isang lohikal na variable. Sa madaling salita, ang kahulugan ng expression ay ito:
}
Kung (kondisyon)(
{
natupad ang kundisyon, gawin mo ito
}
iba pa

ang kundisyon ay hindi natutugunan, gawin itong iba
Sana malinaw ang lohika ng conditional operation. Ngayon tingnan natin ang isang halimbawa.

// Ngayon pansin! Kundisyon: Kung ang $b ay mas malaki kaysa sa $a
// Mga palatandaan > at< , как и в математике, обозначают больше и меньше
kung($b > $a)
{
// kung ang kundisyon ay natugunan, pagkatapos ay gawin ang pagkilos na ito
echo "Ang $b ay mas malaki kaysa sa $a";
}
iba pa
{
// kung hindi naisakatuparan, ito na
echo "Ang $a ay mas malaki kaysa o katumbas ng $b";
}
?>
Pagpapakita Mag-download ng mga mapagkukunan
Bilang resulta, maglalabas ang script 25 higit sa 5. Ang halimbawa ay medyo simple. Sana malinaw na ang lahat. Ngayon iminumungkahi kong isaalang-alang ang isang mas kumplikadong sitwasyon, kung saan maraming mga kundisyon ang dapat matugunan. Ang bawat bagong kundisyon ay maglalaman pagkatapos ng pangunahing kundisyon kung()- pantulong, na nakasulat bilang iba kung(). Sa huli ito ay magiging gaya ng dati iba pa.

Gawain: Ang pagsusulit ay isinasagawa sa paaralan. Kailangang kalkulahin ng script ang marka, alam ang mga kondisyon para sa pagkuha ng bawat grado at ang marka ng mag-aaral mismo. Tingnan natin kung paano isulat ito, at huwag kalimutang basahin ang komentaryo.

$test = 82; // sabihin natin na sumulat ang isang estudyante ng pagsusulit na may 82 puntos

// isulat ang unang kundisyon para sa lima
if($test > 90)
{
// kung ang kundisyon ay natugunan, pagkatapos ay gawin ang pagkilos na ito.
echo "Rating 5";
}
// Ang && sign ay nangangahulugang "at, unyon", na ang kundisyon ay natutugunan kung pareho ang totoo
// iyon ay, ang marka ay mas mababa sa 91 at higit sa 80, pagkatapos ay 4. Kung hindi, ang mga kondisyon ay babasahin pa
iba pa kung ($test< 91 && $test > 80)
{
echo "Rating 4";
}
iba pa kung ($test< 81 && $test > 70)
{
echo "Rating 3";
}
Kung (kondisyon)(
{
echo "Dapat nating isulat muli ang pagsubok...";
}
?>
Pagpapakita Mag-download ng mga mapagkukunan
Ang aming mag-aaral na may oras na parehong magpahinga at magsulat ng isang normal na pagsusulit ay makakakuha rating 4! Sana malinaw ang prinsipyo ng operasyon.

Posible ring maitala sa madaling sabi ang pagpapatakbo ng isang kondisyong operasyon, kapag kailangan mo lamang ng aksyon kung ang kundisyon ay natutugunan.

$edad = 19; // variable na may edad

Kung ($edad > 17)(
echo "Ayan! Kaya kong gawin ang lahat ng gusto ko! $age na ako!";
}
Isang magandang halimbawa ng isang maikling notasyon ng isang kondisyong operasyon. iba pa hindi kailangan magsulat.

Mga Operator ng Paghahambing sa PHP

Ang prinsipyo ng pagpapatakbo ng isang kondisyong operasyon ay malinaw. Ngunit, gaya ng naiintindihan mo, marami pang paraan upang ihambing. Tingnan natin ang talahanayan sa ibaba na may mga operator ng paghahambing.

Halimbawang Pangalan ng Resulta
$a == $b Katumbas ng Tama kung $a katumbas ng $b
$a === $b Magkapareho sa True kung ang $a ay katumbas ng $b at ang parehong mga variable ay pareho ang uri
$a != $b Hindi katumbas ng Tama kung ang $a ay hindi katumbas ng $b
$a === $b Hindi kapareho ng True kung ang $a ay hindi katumbas ng $b at ang parehong uri ay hindi pareho
$a > $b Higit sa True kung ang $a ay mas malaki sa $b
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Higit sa o katumbas ng True kung ang $a ay mas malaki sa o katumbas ng $b
$a<= $b Меньше или равно True, если $a меньше или равно $b
Ngayon tingnan natin ang mga operator na may mga halimbawa:

// salungat sa ugali = ay nangangahulugan ng pagtatalaga ng halaga sa isang variable, at == ay pantay
kung ($a == 5)(
echo "Ang $a ay 5"; // ay magpi-print ng "5 ay katumbas ng 5"
) iba (
echo "Ang $a ay hindi katumbas ng 5";
}

Kung ($a != 6)(
echo "Ang $a ay hindi katumbas ng 6"; // ay magpi-print ng "5 ay hindi katumbas ng 6". Kailangan sa kaso ng pagtanggi
) iba (
echo "$a kahit papaano ay katumbas ng 6";
}

// sa parami nang parami sa tingin ko ay malinaw na ang lahat. Samakatuwid ang halimbawa ay mas kumplikado
kung ($a<= 6){
echo "Ang $a ay mas mababa sa o katumbas ng 6"; // ay magpi-print ng "5 ay mas mababa sa o katumbas ng 6"
) iba (
echo "Ang $a ay mas malaki sa 6";
}

Mga Logical Operator ng PHP

May mga pagkakataon na kailangan mong ihambing ang hindi isang variable, ngunit dalawa o higit pa nang sabay-sabay sa isang kundisyon. Para dito mayroong mga lohikal na operator.

Halimbawang Pangalan ng Resulta
$a at $b Lohikal na "at" TRUE kung pareho ang $a at $b ay TAMA.
$a o $b Lohikal na "o" TRUE kung alinman sa $a o $b ay TAMA.
$a xor $b Eksklusibo "o" TRUE kung ang $a o $b ay TAMA, ngunit hindi pareho.
! $a Negasyon ng TRUE kung $a ay hindi TOTOO.
$a && $b Lohikal na "at" TAMA kung ang parehong $a at $b ay TAMA.
$a || $b Boolean "o" TRUE kung alinman sa $a o $b ay TRUE.
Napansin na natin yan for operations At At o may mga karagdagang operator ba? Ginagawa ito upang bigyang-priyoridad ang mga kumplikadong pagpapatakbo ng paghahambing. Sa talahanayan, ang mga lohikal na operator ay nakalista sa pagkakasunud-sunod ng priyoridad: mula sa pinakamaliit hanggang sa pinakamalaki, iyon ay, halimbawa, || ay may mas mataas na priyoridad kaysa sa o.

Mag-move on na tayo sa mga halimbawa

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

// kundisyon: Kung ang 5 ay hindi katumbas ng 6 (TRUE) AT ang 6 ay hindi katumbas ng 7 (TRUE)
kung ($a< 6 && $b != $c){
echo "Talaga!"; // ay magpi-print ng "Talagang gayon!" kasi TOTOO ang parehong kundisyon
) iba (
echo "Ang isa sa mga kundisyon ay hindi totoo";
}

// kundisyon: Kung ang 6 ay hindi katumbas ng 6 (FALSE) O 6 ay hindi katumbas ng 7 (TRUE)
kung ($b != 6 || $b != $c)(
echo "Ayan na!"; // ay magpapakita ng "Iyon na!", dahil kahit ISA sa mga kundisyon ay TOTOO
) iba (
echo "Ang parehong kundisyon ay mali";
}

Operator ng Ternary

Iminumungkahi kong bumalik ka sa isyu ng ternary code sa ibang pagkakataon. Hindi ko maiwasang banggitin ito, dahil isa itong mahalagang disenyo na makabuluhang binabawasan ang laki ng code. Iminumungkahi kong tingnan mo kaagad ang code.

Ang diwa ng code:(kundisyon) ? ang halaga ng a kung totoo: ang halaga ng a kung mali

Kaya, pinaikli namin ang pahayag na kung. Gayunpaman, ang operasyong ito ay wasto lamang kapag nagtatalaga ng mga halaga sa isang variable. Ngayon tingnan natin ang isang tapos na halimbawa.

// Halimbawa ng paggamit ng ternary operator
$settings = (walang laman ($_POST["setting"])) ? "Default" : $_POST["setting"];

// Ang code sa itaas ay katulad ng sumusunod na block gamit ang if/else
kung (walang laman ($_POST["mga setting"])) (
$settings = "Default"; // Kung walang ililipat, pagkatapos ay iwanan ito bilang "Default"
) iba (
$settings = $_POST["setting"]; // Kung naipasa, itatalaga sa $settings ang naipasa na halaga.
}
?>
Basahin ang mga komento sa code at dapat na malinaw ang lahat.

Salamat sa iyong pansin!


Sinusuportahan ng PHP ang karaniwang mga lohikal na operator na AND at && , OR at || , ! (hindi) at XOR . Binibigyang-daan ka ng mga lohikal na operator na ihambing ang mga resulta ng dalawang operand (isang value o isang expression) upang matukoy kung ang isa o pareho ay nagbabalik ng totoo o mali at piliin kung ipagpapatuloy ang pagpapatupad ng script nang naaayon batay sa halagang ibinalik. Tulad ng mga operator ng paghahambing, ang mga lohikal na operator ay nagbabalik ng isang Boolean na halaga - totoo o mali, depende sa mga halaga sa magkabilang panig ng operator.

Lohikal O (O at ||)

Ang lohikal na OR operator ay tinutukoy bilang OR o || . Nagsasagawa ito ng lohikal na OR na operasyon sa dalawang operand. Kung ang isa o parehong operand ay totoo, ito ay nagbabalik ng totoo. Kung ang parehong operand ay false, ito ay nagbabalik ng false. Marahil ay may tanong ka: bakit gumawa sila ng dalawang bersyon ng isang operator? Ang punto ng dalawang magkaibang variant ng lohikal na OR operator ay gumagana ang mga ito na may magkaibang priyoridad.

Una, tingnan natin kung paano gumagana ang ||. . At kaya, kung ang isa o pareho sa mga operand nito ay totoo, ito ay nagbabalik ng true . Kung ang parehong mga operand ay nagbabalik ng mga maling halaga, ito ay magbabalik ng false .

Gumagana ang operator ng OR katulad ng operator na ||. na may isang pagbubukod, kung ang OR operator ay ginamit sa isang takdang-aralin, susuriin muna nito at ibabalik ang halaga ng kaliwang operand, kung hindi, ito ay gumagana nang eksakto sa || operator. , ibig sabihin. kung ang isa o pareho sa mga operand nito ay totoo, ito ay nagbabalik ng true . Kung ang parehong operand ay nagbabalik ng false, ito ay magbabalik ng false .

Upang gawing mas malinaw kung paano gumagana ang mga ito, ibigay natin ang sumusunod na halimbawa:

1 // Una ang variable ay itinalaga ang value na false, at pagkatapos ay susuriin ang pangalawang operand // Priority action: ($var2 = false) o true $var2 = false o true;
echo $var2; // false ay hindi naka-print // ($var3 = 0) o 3 $var3 = 0 o 3;

echo"

$var3"; // => 0 ?> Ang anumang paghahambing at lohikal na mga operator ay maaaring pagsamahin sa mas kumplikadong mga istruktura: Isa pang bagay na dapat banggitin

mahalagang punto

Ang lohikal na AND operator ay tinutukoy bilang AND o && . Nagsasagawa ito ng lohikal na AT operasyon sa dalawang operand. Nagbabalik ito ng true kung at kung ang parehong mga operand ay magsusuri sa true . Kung ang isa o parehong operand ay nagbalik ng false , ang operator ay nagbabalik ng false . Ang kahulugan ng dalawang magkaibang bersyon ng operator na "lohikal AT" ay pareho sa dalawang naunang operator, ibig sabihin, gumagana ang mga ito nang may magkakaibang mga priyoridad.

Una, tingnan natin kung paano gumagana ang && operator. At kaya, kung ang parehong mga operand nito ay totoo, ito ay nagbabalik ng true . Kung hindi bababa sa isa o pareho sa mga operand nito ang nagbabalik ng false , ito ay magbabalik din ng false .

Gumagana ang operator ng AND katulad ng operator na && na may isang pagbubukod, kung ang operator ng AND ay ginamit sa isang pagtatalaga, susuriin at ibabalik muna nito ang halaga ng kaliwang operand, kung hindi, ito ay gumagana nang eksakto katulad ng && operator. Kung hindi bababa sa isa sa mga operand nito ang nagbalik ng false, ito rin ay magbabalik ng false, at kung ang parehong operand ay nagbabalik ng false, ito ay magbabalik ng false.

Upang maunawaan, tingnan natin ngayon kung paano ito gumagana sa pagsasanay:

$bar3"; // => 9 ?>

Eksklusibo O (XOR)

Ang eksklusibong OR operator ay tinutukoy bilang XOR. Nagbabalik ito ng totoo kung ang isa at isa lamang sa mga operand nito ay totoo. Kung ang parehong mga operand ay totoo, ang operator ay magbabalik ng mali.

Dahil ang XOR operator ay may parehong precedence gaya ng AND at OR operator (mas mababa kaysa sa assignment operator), at ito ay ginagamit sa isang assignment expression, sinusuri at ibinabalik muna nito ang halaga ng kaliwang operand.

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

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

Lohikal HINDI (!)

Ang lohikal na NOT operator, na tinatawag ding negation, ay ipinahiwatig ng sign! . Ito ay isang unary operator na inilagay bago ang isang solong operand. Ang logical NOT operator ay ginagamit upang baligtarin ang lohikal na halaga ng operand nito at palaging nagbabalik ng true o false .