Relational at lohikal na mga operator. Mga Operator ng Paghahambing sa PHP

Inilalarawan ng kabanatang ito ang mga operator ng paghahambing. Ang mga operator na ito ay sumusubok para sa pagkakapantay-pantay (tulad ng katumbas ng, mas mababa sa, magkaparehong katumbas ng, atbp.) sa pagitan ng dalawang halaga at nagbabalik ng totoo o mali depende sa kung paano nauugnay ang mga operand. Palaging ibinabalik ng mga operator ng paghahambing ang mga halaga ng Boolean, at ang mga halagang ito ay kadalasang ginagamit sa mga pahayag tulad ng , habang o para sa upang kontrolin ang daloy ng pagpapatupad ng programa.

Mga Operator ng Paghahambing
HalimbawaPangalanResulta
$i == $ykatumbasTRUE kung ang $i ay katumbas ng $y pagkatapos ng conversion ng uri ng data.
$i === $yMagkaparehoTRUE kung ang $i ay katumbas ng $y at may parehong uri ng data.
$i != $yHindi pantay
$i<>$yHindi pantayTRUE kung ang $i ay hindi katumbas ng $y pagkatapos ng conversion ng uri ng data.
$i !== $yHindi magkaparehoTAMA kung ang $i ay hindi katumbas ng $y o ang mga ito ay may iba't ibang uri.
$i< $y Mas kauntiTRUE kung ang $i ay mahigpit na mas mababa sa $y.
$i > $yHigit paTRUE kung ang $i ay mahigpit na mas malaki kaysa sa $y.
$i<= $y Mas kaunti o katumbasTRUE kung ang $i ay mas mababa sa o katumbas ng $y.
$i >= $yHigit pa o katumbasTRUE kung ang $i ay mas malaki sa o katumbas ng $y.

Tandaan: Kung susubukan mong ipakita ang resulta ng paghahambing na operasyon sa screen, totoo ay ipapakita sa window ng browser bilang 1. Ang maling halaga ay tumutugma sa numero 0 at hindi ipinapakita sa screen (sa prinsipyo, dapat mong tandaan ito mula sa paglalarawan i-type ang boolean). Kung gusto mong makita ang resulta bilang totoo o mali, gamitin ang var_dump() function.

Dapat ding tandaan: kung ang isang string na may isang numero o dalawang mga string na naglalaman ng mga numero ay inihambing, ang bawat string ay mako-convert sa isang numero, at sila ay ihahambing bilang mga numero.

Operator == (mga pagkakapantay-pantay)

Ang operator na == (pagkakapantay-pantay) ay tumatanggap ng mga operand ng anumang uri kung ang dalawang operand ay pantay, ito ay nagbabalik ng true, kung hindi, ito ay nagbabalik ng false.

Kung ang mga operand ay may iba't ibang uri ng data, susubukan ng PHP na i-convert ang mga ito sa parehong uri ng data bago ihambing ang mga ito, halimbawa ang expression na "4" == 4 ay babalik ng true dahil awtomatikong ilalagay ng PHP ang mga halaga na inihahambing sa parehong uri ng data. Katulad nito, ang expression na $a == 1 ay magbabalik ng true kung ang variable na $a ay naglalaman ng value 1. Kung gusto mong maiwasan ang implicit type na conversion kapag naghahambing, dapat mong gamitin ang identity operator, na tatalakayin sa ibang pagkakataon.

Operator === (mga pagkakakilanlan)

Ang === (identity) operator ay tumatanggap ng mga operand ng anumang uri at nagbabalik ng true kung ang kanilang mga halaga ay pareho (pantay), at mali kung sila ay magkaiba. Paano ito naiiba sa equality operator? Sinusuri ng operator ng pagkakakilanlan ang dalawang operand para sa "pagkakakilanlan" batay sa isang mahigpit na kahulugan ng isang tugma, ibig sabihin, bilang karagdagan sa mga halaga ng mga operand mismo ay pantay, dapat din silang pareho ng uri ng data. Bilang halimbawa, isaalang-alang ang isang expression tulad ng 5 === "5" , ang resulta ng expression na ito ay magiging mali dahil ang halaga sa kaliwa ay isang numero at ang halaga sa kanan ay isang string, iyon ay, ang mga halagang ito ​may iba't ibang uri ng data. Tandaan na ang mga operator == at === ay nangangahulugang "katumbas ng" at "magkapareho/magkaparehong pantay".

Operator != o<>(hindi pagkakapantay-pantay)

Operator ng hindi pagkakapantay-pantay ay may dalawang uri: != at<>. Ito ay kabaligtaran ng == operator at nagbabalik ng true kung ang mga operand ay hindi pantay. Ang inequality operator ay nagbabalik lamang ng false kung ang mga halaga sa magkabilang panig nito ay pantay-pantay sa isa't isa.

$var2); // return false var_dump("Home"<>"bahay"); // return true ?>

Operator !== (hindi pagkakakilanlan)

Ang !== (non-identity) operator ay gumaganap ng eksaktong kabaligtaran ng === operator. Nagbabalik ito ng totoo kung ang mga halaga ng operand ay hindi pantay sa isa't isa o hindi sa parehong uri ng data. Bilang halimbawa, isaalang-alang ang sumusunod na expression: 7 !== "7" , ang operator na "non-identity" ay magbabalik ng true dahil ang value sa kaliwa ay isang numero at ang value sa kanan ay isang string, ibig sabihin, ang mga ito ay tumutukoy sa iba't ibang uri datos. Mula dito magiging madaling matandaan na ang mga operator != at !== ay nangangahulugang "hindi pantay" at "hindi magkapareho/magkapareho hindi pantay."

Operator > (higit pa)

Kapag ginagamit ang > (mas malaki kaysa) operator, ang paghahambing ay babalik lamang ng totoo kung ang halaga sa kaliwa ng operator ay mas malaki kaysa sa halaga sa kanan nito. Tulad ng ibang mga operator, gumagana ang > operator hindi lamang sa mga numerong halaga, ngunit pati na rin sa mga string. Ngunit paano magiging mas malaki ang isang linya kaysa sa isa pa?

Kapag nagtatrabaho sa mga string, ang titik sa maliit na titik higit pang mga titik V malaking titik. Kung ikukumpara Mga string ng PHP susuriin muna ang unang titik ng string para sa hindi pagkakatugma. Kung walang nakitang pagkakaiba, lilipat ito sa susunod na karakter, at iba pa, hanggang sa makita ang pagkakaiba o maabot ang dulo ng linya. Kung ang dalawang halaga sa magkabilang panig ng > operator ay pantay, ang operator ay magbabalik din ng false .

3); // return true var_dump("Hi" > "hi"); // return false var_dump(1 > 1); // return false ?>

Operator< (меньше)

Operator< (меньше ) является функциональной противоположностью оператора «больше». Он возвращает true , когда значение слева от него mas mababa sa halaga matatagpuan sa kanan, at false kung ang halaga ng kaliwang operand ay mas malaki kaysa sa kanan o ang mga halaga ay pantay.

Operator >= (mas malaki sa o katumbas ng)

Operator >= ( higit pa o katumbas) ay bahagyang naiiba sa mga operator ng paghahambing na tinalakay kanina. Ito ay nagdaragdag ng kakayahan para sa dalawang halaga sa magkabilang panig nito upang maging pantay, iyon ay, para sa true na maibalik, ang halaga sa kaliwa ng operator ay dapat na mas malaki kaysa o katumbas ng halaga sa kanan nito. Ang mas malaki sa o katumbas ng operator ay nagbabalik lamang ng false kung ang halaga sa kaliwa nito ay mas mababa sa halaga sa kanan.

= 5); // return true var_dump("hi" >= "hi"); // return true var_dump(1 >= 2); // return false ?>

Operator<= (mas mababa o katumbas)

Operator<= (меньше или равно) похож на оператор «больше или равно». Чтобы оператор <= вернул true , значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false , только если значение слева от него больше, чем значение справа.

Dahil sa nakaraang artikulo ay gumamit ako ng isang lohikal na operasyon sa unang pagkakataon, sasabihin ko sa iyo kung ano ang mga ito, kung ilan ang mayroon at kung paano gamitin ang mga ito.

Mayroong tatlong lohikal na operasyon sa C++:

  1. Ang lohikal na operasyon na AT && ay alam na natin;
  2. Lohikal O operasyon || ;
  3. Lohikal na operasyon HINDI ! o lohikal na negasyon.

Ang mga lohikal na operasyon ay bumubuo ng isang komplikadong (composite) na kondisyon mula sa ilang simple (dalawa o higit pa) na mga kondisyon. Pinapasimple ng mga operasyong ito ang istruktura ng program code nang maraming beses. Oo, magagawa mo nang wala ang mga ito, ngunit pagkatapos ay ang bilang ng mga if ay tataas nang maraming beses, depende sa mga kondisyon. Ang sumusunod na talahanayan ay maikling inilalarawan ang lahat ng mga lohikal na operasyon sa C++ programming language para sa pagbuo ng mga lohikal na kundisyon.

Ngayon ay dapat mong maunawaan ang pagkakaiba sa pagitan ng lohikal na AT operasyon at ang lohikal na O operasyon upang hindi malito sa hinaharap. Panahon na upang maging pamilyar sa uri ng data bool–lohikal. Ang uri ng data na ito ay maaaring tumagal ng dalawang halaga: true at false. Ang kundisyong sinusuri sa mga piling pahayag ay may bool na uri ng data. Isaalang-alang natin ang prinsipyo ng pagtatrabaho ng sumusunod na programa, at ang lahat ay magiging malinaw sa lahat ng mga lohikal na operasyong ito.

// or_and_not.cpp: Tinutukoy ang entry point para sa console application. #include "stdafx.h" #include gamit ang namespace std; int main(int argc, char* argv) ( bool a1 = true, a2 = false; // deklarasyon ng boolean variable bool a3 = true, a4 = false; cout<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

Linya 9 at 10dapat na malinaw sa iyo, dahil ang mga variable ng uri ay sinisimulan dito bool . Bukod dito, ang bawat variable ay itinalaga ng isang halaga Tama o mali . Simula sa ika-9 na linya at pagtatapos ika-20, ay nagpapakita ng paggamit ng mga lohikal na operasyon. Ang resulta ng programa (tingnan ang Larawan 1).

Tablica istinnosti log operacii && true && false: 0 false && true: 0 true && true: 1 false && false: 0 Tablica istinnosti log operacii || totoo || false: 1 false || totoo: 1 totoo || totoo: 1 mali || false: 0 Tablica istinnosti log operacii ! !true: 0 !false: 1 Upang magpatuloy, pindutin ang anumang key. . .

Figure 1 - C++ logical operations

Marahil ay may tanong ka, "Ano ang mga zero at isa na ito?" Kung may tanong, kailangan itong sagutin. Sagot ko: "Ang isang zero ay isang representasyon ng lohikal na halaga na mali, at ang mga ito ay isang lohikal na halaga na totoo." Hayaan akong ipaliwanag nang maikli ang ilang mga punto. Pinagsamang kondisyon gamit ang boolean AT ay totoo lamang kung ang parehong pangunahing kondisyon ay totoo. Sa lahat ng iba pang kaso, mali ang compound condition. Ang tambalang kundisyon na gumagamit ng lohikal na OR ay mali lamang kung ang parehong simpleng kundisyon ay mali. Sa lahat ng iba pang mga kaso, ang tambalang kondisyon ay totoo. Lohikal na negasyon HINDI ay isang unary operator, at hindi ito pinagsasama ang dalawang kundisyon, hindi katulad ng mga lohikal na operator AT At O, na mga binary operations. Ang lohikal na negation ay nagpapahintulot sa iyo na baligtarin ang kahulugan ng kondisyon, na sa ilang mga kaso ay napaka-maginhawa. Ang isang kundisyon na may lohikal na negation ay totoo kung ang parehong kundisyon ay mali nang walang negation, at vice versa.


Ang pangunahing bagay sa pagkilos ng operator na ito ay ang 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.

$a = 5;
$b = 25;

// 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";
}
iba pa
{
echo "Dapat nating isulat muli ang pagsubok...";
}
?>
Pagpapakita Mag-download ng mga mapagkukunan
Ang aming mag-aaral na may oras upang magpahinga at magsulat ng isang normal na pagsusulit ay tumatanggap 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 maikling tala kondisyon na 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 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 ang $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 isang kung totoo: ang halaga ng isang kung mali

Kaya, pinaikli namin ang pahayag na kung. Gayunpaman, ang operasyong ito ay may bisa 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 atensyon!