Waendeshaji wa uhusiano na mantiki. Waendeshaji wa Kulinganisha katika PHP

Sura hii inaelezea waendeshaji kulinganisha. Waendeshaji hawa hupima usawa (kama vile sawa na, chini ya, sawa sawa na, n.k.) kati ya thamani mbili na kurejesha ukweli au uongo kulingana na jinsi uendeshaji unavyohusiana. Waendeshaji kulinganisha kila wakati hurejesha thamani za Boolean, na thamani hizi hutumiwa mara nyingi katika taarifa kama vile , wakati au kwa kudhibiti mtiririko wa utekelezaji wa programu.

Waendeshaji wa Kulinganisha
MfanoJinaMatokeo
$i == $ySawaTRUE ikiwa $i ni sawa na $y baada ya ubadilishaji wa aina ya data.
$i === $ySawaTRUE ikiwa $i ni sawa na $y na ina aina sawa ya data.
$i != $ySio sawa
$i<>$ySio sawaTRUE ikiwa $i si sawa na $y baada ya ubadilishaji wa aina ya data.
$i !== $yHaifananiKWELI ikiwa $i si sawa na $y au ni za aina tofauti.
$i< $y ChiniKWELI ikiwa $i ni chini ya $y kabisa.
$i > $yZaidiTRUE ikiwa $i ni kubwa kuliko $y.
$i<= $y Chini au sawaKWELI ikiwa $i ni chini ya au sawa na $y.
$i >= $yZaidi au sawaKWELI ikiwa $i ni kubwa kuliko au sawa na $y.

Kumbuka: Ikiwa utajaribu kuonyesha matokeo ya operesheni ya kulinganisha kwenye skrini, kweli itaonyeshwa kwenye dirisha la kivinjari kama 1. Thamani ya uwongo inalingana na nambari 0 na haijaonyeshwa kwenye skrini (kimsingi, unapaswa kukumbuka hii kutoka kwa maelezo. chapa boolean) Ikiwa unataka kuona matokeo kama kweli au uongo, tumia chaguo la kukokotoa var_dump().

Inafaa pia kuzingatia: ikiwa kamba iliyo na nambari au nyuzi mbili zilizo na nambari zinalinganishwa, kila safu itabadilishwa kuwa nambari, na italinganishwa kama nambari.

Opereta == (sawa)

Opereta == (usawa) inakubali uendeshaji wa aina yoyote; ikiwa operesheni mbili ni sawa, inarudi kweli, vinginevyo inarudisha uwongo.

Ikiwa operesheni ni za aina tofauti za data, PHP itajaribu kuzibadilisha kuwa aina sawa ya data kabla ya kuzilinganisha, kwa mfano usemi "4" == 4 utarudi kweli kwa sababu PHP itatupa maadili yanayolinganishwa na aina ya data sawa. Vile vile, usemi $a == 1 utarudi kuwa kweli ikiwa kigezo $a kina thamani 1. Ikiwa ungependa kuepuka ubadilishaji wa aina isiyo dhahiri unapolinganisha, unapaswa kutumia opereta kitambulisho, ambacho kitajadiliwa baadaye.

Opereta === (vitambulisho)

Opereta === (kitambulisho) hukubali uendeshaji wa aina yoyote na kurejesha kweli ikiwa thamani zao ni sawa (sawa) na uongo ikiwa ni tofauti. Je, ni tofauti gani na mwendeshaji wa usawa? Opereta wa kitambulisho hujaribu operesheni mbili za "kitambulisho" kulingana na ufafanuzi mkali wa mechi, kumaanisha kuwa pamoja na maadili ya watendaji wenyewe kuwa sawa, lazima pia ziwe za aina sawa ya data. Kama mfano, fikiria usemi kama vile 5 === "5" , matokeo ya usemi huu yatakuwa ya uwongo kwa sababu thamani iliyo upande wa kushoto ni nambari na thamani ya kulia ni kamba, ambayo ni, maadili haya kuwa na aina tofauti za data. Kumbuka kwamba waendeshaji == na === wanamaanisha "sawa na" na "sawa / sawa sawa".

Opereta != au<>(kutokuwa na usawa)

Opereta isiyo na usawa ina aina mbili: != na<>. Ni kinyume cha opereta == na inarudi kweli ikiwa operesheni sio sawa. Opereta ya ukosefu wa usawa hurejesha sivyo ikiwa tu maadili ya pande zote mbili ni sawa.

$var2); // rudisha var_dump ya uwongo ("Nyumbani"<>"nyumbani"); // kurudi kweli?>

Opereta !== (isiyo ya utambulisho)

Opereta !== (isiyo ya utambulisho) hufanya kinyume kabisa na opereta ===. Inarudi kuwa kweli ikiwa thamani za uendeshaji si sawa au si za aina sawa ya data. Kama mfano, zingatia usemi ufuatao: 7 !== "7" , opereta "non-identity" atarudi kuwa kweli kwa sababu thamani iliyo upande wa kushoto ni nambari na thamani iliyo upande wa kulia ni mfuatano, kumaanisha kwamba wanarejelea. aina tofauti data. Kuanzia hapa itakuwa rahisi kukumbuka kuwa waendeshaji != na !== wanamaanisha "si sawa" na "hawafanani/hawafanani si sawa."

Opereta > (zaidi)

Unapotumia > (kubwa kuliko) opereta, ulinganisho unarudi kweli ikiwa tu thamani iliyo upande wa kushoto wa opereta ni kubwa kuliko thamani iliyo upande wake wa kulia. Kama waendeshaji wengine, > mwendeshaji hufanya kazi sio tu na maadili ya nambari, lakini pia na zile za kamba. Lakini mstari mmoja unawezaje kuwa mkubwa kuliko mwingine?

Wakati wa kufanya kazi na kamba, barua ndani herufi ndogo barua zaidi V herufi kubwa. Wakati wa kulinganisha PHP masharti kwanza hukagua herufi ya kwanza ya mfuatano kwa kutolingana. Ikiwa hakuna tofauti inayopatikana, huenda kwa tabia inayofuata, na kadhalika, mpaka tofauti inapatikana au mwisho wa mstari unapatikana. Ikiwa maadili mawili kwa kila upande wa > opereta ni sawa, opereta pia atarudisha false .

3); // return true var_dump("Hi" > "hi"); // rudisha var_dump ya uwongo (1 > 1); // kurudi uongo?>

Opereta< (меньше)

Opereta< (меньше ) является функциональной противоположностью оператора «больше». Он возвращает true , когда значение слева от него chini ya thamani, ambayo iko upande wa kulia, na si kweli ikiwa thamani ya operesheni ya kushoto ni kubwa kuliko ya kulia au maadili ni sawa.

Opereta >= (kubwa kuliko au sawa na)

Opereta >= ( zaidi au sawa) ni tofauti kidogo na waendeshaji kulinganisha waliojadiliwa hapo awali. Inaongeza uwezo wa thamani mbili kwa kila upande wake kuwa sawa, yaani, ili ukweli kurejeshwa, thamani iliyo upande wa kushoto wa opereta lazima iwe kubwa kuliko au sawa na thamani iliyo upande wake wa kulia. Opereta kubwa kuliko au sawa hurejesha sivyo ikiwa tu thamani iliyo upande wake wa kushoto ni chini ya thamani ya kulia.

= 5); // return true var_dump("hi" >= "hi"); // rudisha var_dump ya kweli(1 >= 2); // kurudi uongo?>

Opereta<= (chini au sawa)

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

Kwa kuwa katika makala iliyotangulia nilitumia operesheni ya mantiki kwa mara ya kwanza, nitakuambia ni nini, ni ngapi na jinsi ya kutumia.

Kuna shughuli tatu za kimantiki katika C++:

  1. Operesheni ya kimantiki NA && tayari inajulikana kwetu;
  2. Uendeshaji wa kimantiki AU || ;
  3. Uendeshaji wa kimantiki HAPANA ! au kukanusha kimantiki.

Uendeshaji wa mantiki huunda hali ngumu (composite) kutoka kwa hali kadhaa rahisi (mbili au zaidi). Shughuli hizi hurahisisha muundo wa msimbo wa programu mara kadhaa. Ndiyo, unaweza kufanya bila wao, lakini basi idadi ya ikiwa huongezeka mara kadhaa, kulingana na hali. Jedwali lifuatalo linaelezea kwa ufupi shughuli zote za kimantiki katika lugha ya programu ya C++ kwa ajili ya kujenga hali za kimantiki.

Sasa unapaswa kuelewa tofauti kati ya mantiki NA uendeshaji na mantiki AU operesheni ili usichanganyike katika siku zijazo. Ni wakati wa kufahamiana na aina ya data bool- mantiki. Aina hii ya data inaweza kuchukua thamani mbili: kweli na si kweli. Hali inayojaribiwa katika taarifa zilizochaguliwa ina aina ya data ya bool. Hebu fikiria kanuni ya kazi ya programu ifuatayo, na kila kitu kitakuwa wazi na shughuli hizi zote za mantiki.

// or_and_not.cpp: Inafafanua mahali pa kuingilia kwa programu ya kiweko. #pamoja na "stdafx.h" #pamoja na kutumia nafasi ya majina std; int main(int argc, char* argv) ( bool a1 = kweli, a2 = uongo; // tamko la viambajengo vya boolean bool a3 = kweli, a4 = uongo; 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; }

Mstari wa 9 na 10inapaswa kuwa wazi kwako, kwani anuwai za aina zimeanzishwa hapa bool . Zaidi ya hayo, kila kigezo kimepewa thamani kweli au uongo. Kuanzia na Mstari wa 9 na kumalizia ya 20, inaonyesha matumizi ya shughuli za kimantiki. Matokeo ya programu (angalia Mchoro 1).

Tablica istinnosti log operacii && kweli && uongo: 0 uongo && kweli: 0 kweli && kweli: 1 uongo && uongo: 0 Tablica istinnosti log operacii || kweli || uongo: 1 uongo || kweli: 1 kweli || kweli: 1 uongo || uongo: 0 Tablica istinnosti log operacii ! !kweli: 0 !sivyo: 1 Ili kuendelea, bonyeza kitufe chochote. . .

Kielelezo 1 - C ++ shughuli za kimantiki

Pengine una swali, "Je, hizi sufuri na zile ni zipi?" Ikiwa kuna swali, basi linahitaji kujibiwa. Ninajibu: "Sufuri ni kiwakilishi cha thamani ya kimantiki kuwa si kweli, na hizo ni thamani ya kimantiki kweli." Acha nieleze kwa ufupi baadhi ya mambo. Hali ya mchanganyiko kwa kutumia boolean NA ni kweli ikiwa hali zote mbili kuu ni kweli. Katika hali nyingine zote, hali ya kiwanja ni uongo. Hali ya mchanganyiko kwa kutumia kimantiki AU si kweli ikiwa hali zote mbili rahisi ni za uwongo. Katika visa vingine vyote, hali ya kiwanja ni kweli. Kukanusha kimantiki HAPANA ni opereta isiyo ya kawaida, na haichanganyi masharti mawili, tofauti na waendeshaji wa kimantiki NA Na AU, ambazo ni shughuli za binary. Kukanusha kimantiki hukuruhusu kubadilisha maana ya hali hiyo, ambayo katika hali zingine ni rahisi sana. Hali yenye ukanushaji wa kimantiki ni kweli ikiwa hali sawa ni ya uwongo bila kukanusha, na kinyume chake.


Jambo kuu katika hatua ya operator hii ni hali. ikiwa imetafsiriwa kutoka kwa Kiingereza Kama. Hali inakubaliwa kama hoja (iliyo kwenye mabano). Hali inaweza kuwa usemi wa kimantiki au tofauti ya kimantiki. Ili kuiweka kwa urahisi, maana ya usemi itakuwa hii:

Ikiwa (hali) (
hali imetimizwa, fanya hivi
}
mwingine
{
hali haijafikiwa, fanya tofauti
}
Natumai mantiki ya operesheni ya masharti iko wazi. Sasa tuangalie mfano.

$a = 5;
$ b = 25;

// Sasa makini! Hali: Ikiwa $b ni kubwa kuliko $a
// Ishara > na< , как и в математике, обозначают больше и меньше
ikiwa($b > $a)
{
// ikiwa hali hiyo imefikiwa, basi fanya kitendo hiki
echo "$b ni kubwa kuliko $a";
}
mwingine
{
// ikiwa haijatekelezwa, basi hii
echo "$a ni kubwa kuliko au sawa na $b";
}
?>
Maonyesho Pakua vyanzo
Kama matokeo, hati itatoa 25 zaidi ya 5. Mfano ni rahisi sana. Natumai kila kitu kiko wazi. Sasa ninapendekeza kuzingatia hali ngumu zaidi, ambapo masharti kadhaa lazima yatimizwe. Kila hali mpya itakuwa na baada ya hali kuu kama()- msaidizi, ambayo imeandikwa kama vinginevyo kama(). Mwishoni itakuwa kama kawaida mwingine.

Kazi: Mtihani unafanywa shuleni. Hati inahitaji kukokotoa alama, kujua masharti ya kupata kila daraja na alama ya mwanafunzi yenyewe. Wacha tuone jinsi ya kuandika hii, na usisahau kusoma maoni.

$ mtihani = 82; // tuseme mwanafunzi aliandika mtihani na pointi 82

// andika sharti la kwanza kwa tano
ikiwa($mtihani> 90)
{
// ikiwa hali hiyo imefikiwa, basi fanya kitendo hiki.
echo "Ukadiriaji 5";
}
// Alama ya && inamaanisha "na, muungano", kwamba sharti linatimizwa ikiwa zote mbili ni kweli
// yaani, alama ni chini ya 91 na zaidi ya 80, kisha 4. Vinginevyo, masharti yanasomwa zaidi.
vinginevyo ikiwa ($test< 91 && $test > 80)
{
echo "Ukadiriaji 4";
}
vinginevyo ikiwa ($test< 81 && $test > 70)
{
echo "Ukadiriaji 3";
}
mwingine
{
echo "Tunapaswa kuandika mtihani tena ...";
}
?>
Maonyesho Pakua vyanzo
Mwanafunzi wetu ambaye ana muda wa kupumzika na kuandika mtihani wa kawaida hupokea alama 4! Natumai kanuni ya operesheni iko wazi.

Inawezekana pia kurekodi kwa ufupi uendeshaji wa operesheni ya masharti, wakati unahitaji hatua tu ikiwa hali hiyo inakabiliwa.

Umri wa $ = 19; // kutofautiana na umri

Ikiwa ($umri> 17)(
echo "Hiyo ndiyo! Ninaweza kufanya chochote ninachotaka! Tayari nina umri wa $! ";
}
Mfano mzuri kabisa noti fupi operesheni ya masharti. mwingine si lazima kuandika.

Waendeshaji wa Kulinganisha katika PHP

Kanuni ya uendeshaji wa operesheni ya masharti ni wazi. Lakini, kama unavyoelewa, kuna njia nyingi zaidi za kulinganisha. Wacha tuangalie jedwali hapa chini na waendeshaji wa kulinganisha.

Mfano Matokeo ya Jina
$a == $b Inalingana na Kweli ikiwa $a ni sawa na $b
$a === $b Sawa na Kweli ikiwa $a ni sawa na $b na viambajengo vyote viwili ni vya aina moja.
$a != $b Si sawa na Kweli ikiwa $a si sawa na $b
$a === $b Haifanani na Kweli ikiwa $a si sawa na $b na aina zote mbili si sawa.
$a > $b Kubwa kuliko Kweli ikiwa $a ni kubwa kuliko $b
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Kubwa kuliko au sawa na Kweli ikiwa $a ni kubwa kuliko au sawa na $b
$a<= $b Меньше или равно True, если $a меньше или равно $b
Sasa hebu tuangalie waendeshaji pamoja na mifano:

// kinyume na tabia = inamaanisha kugawa thamani kwa kutofautisha, na == ni sawa
ikiwa ($a == 5)(
echo "$a ni 5"; // itachapisha "5 sawa na 5"
) mwingine (
echo "$a si sawa na 5";
}

Ikiwa ($a != 6)(
echo "$a si sawa na 6"; // itachapisha "5 sio sawa na 6". Muhimu katika kesi ya kukataa
) mwingine (
echo "$a kwa namna fulani ni sawa na 6";
}

// na zaidi na kidogo nadhani kila kitu ni wazi. Kwa hivyo mfano ni ngumu zaidi
ikiwa ($a<= 6){
echo "$a ni chini ya au sawa na 6"; // itachapisha "5 ni chini ya au sawa na 6"
) mwingine (
echo "$a ni kubwa kuliko 6";
}

PHP Mantiki Operators

Kuna wakati unahitaji kulinganisha sio tofauti moja, lakini mbili au zaidi mara moja katika hali moja. Kwa hili wapo waendeshaji mantiki .

Mfano Matokeo ya Jina
$a na $b Kimantiki "na" TRUE ikiwa $a na $b zote ni TRUE.
$a au $b Kimantiki "au" TRUE ikiwa $a au $b ni TRUE.
$a xor $b Pekee "au" TRUE ikiwa $a au $b ni TRUE, lakini si zote mbili.
! $a Kukanusha TRUE ikiwa $a si KWELI.
$a && $b Mantiki "na" TRUE ikiwa $a na $b zote ni TRUE.
$a | $b Boolean "au" TRUE ikiwa $a au $b ni TRUE.
Tayari tumegundua hilo kwa shughuli Na Na au kuna waendeshaji wa ziada? Hii inafanywa ili kuweka kipaumbele kwa shughuli ngumu za kulinganisha. Katika jedwali, waendeshaji wa kimantiki wameorodheshwa kwa utaratibu wa kipaumbele: kutoka mdogo hadi mkubwa, yaani, kwa mfano, || ina kipaumbele cha juu kuliko au.

Hebu tuendelee kwa mifano

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

// sharti: Ikiwa 5 si sawa na 6 (KWELI) NA 6 si sawa na 7 (KWELI)
ikiwa ($a< 6 && $b != $c){
echo "Kweli hivyo!"; // itachapisha "Hakika hivyo!" kwa sababu Masharti yote mawili ni KWELI
) mwingine (
echo "Moja ya masharti sio kweli";
}

// sharti: Ikiwa 6 si sawa na 6 (SIYO) AU 6 si sawa na 7 (KWELI)
ikiwa ($b != 6 || $b != $c)(
echo "Ndiyo hiyo!"; // itaonyesha "Hiyo ndiyo!", kwa sababu angalau MOJA ya masharti ni KWELI
) mwingine (
echo "Masharti yote mawili ni ya uwongo";
}

Opereta wa Ternary

Ninapendekeza urejee kwa suala la nambari ya ternary baadaye. Sikuweza kujizuia kutaja, kwa kuwa ni muundo muhimu ambao hupunguza kwa kiasi kikubwa saizi ya msimbo. Ninapendekeza uangalie nambari mara moja.

Muhtasari wa kanuni:(hali)? thamani ya a kama kweli: thamani ya kama si kweli

Kwa hivyo, tunafupisha kauli ya if. Walakini, operesheni hii ni halali tu wakati wa kugawa maadili kwa tofauti. Sasa hebu tuangalie mfano uliomalizika.

// Mfano wa kutumia ternary operator
$settings = (tupu($_POST["settings"])) ? "Chaguo-msingi" : $_POST["mipangilio"];

// Nambari iliyo hapo juu ni sawa na kizuizi kifuatacho kwa kutumia if/else
ikiwa (tupu($_POST["mipangilio"])) (
$settings = "Chaguo-msingi"; // Ikiwa hakuna kitu kinachohamishwa, basi iache kama "Chaguo-msingi"
) mwingine (
$settings = $_POST["mipangilio"]; // Ikipitishwa, basi $settings inapewa thamani iliyopitishwa.
}
?>
Soma maoni kwa msimbo na kila kitu kinapaswa kuwa wazi.

Asante kwa umakini wako!