Php boolean au. taarifa za masharti za PHP ikiwa, badilisha na mwendeshaji wa tatu. Waendeshaji wote wenye mantiki katika PHP

Sasisho la mwisho: 11/1/2015

Katika PHP tunaweza kutumia waendeshaji mbalimbali: hesabu, mantiki, nk. Wacha tuangalie kila aina ya operesheni.

Shughuli za hesabu

    + (operesheni ya nyongeza)

    Kwa mfano, $a + 5

    - (operesheni ya kutoa)

    Kwa mfano, $a - 5

    * (kuzidisha)

    Kwa mfano, $a * 5

    / (mgawanyiko)

    Kwa mfano, $a / 5

    % (kupata sehemu iliyobaki)

    Kwa mfano: $a=12; mwangwi $a% 5; // sawa na 2

    ++ (ongezeko/ongeza thamani kwa moja)

    Kwa mfano, ++$a

    Ni muhimu kuelewa tofauti kati ya maneno ++$a na $a++ . Kwa mfano:

    $a=12; $b=++$a; // $b ni sawa na 13 echo $b;

    Hapa, kwanza, moja huongezwa kwa thamani ya kutofautiana $ a, na kisha thamani yake inalinganishwa na kutofautiana $ b. Ingekuwa tofauti ikiwa usemi ungeonekana hivi: $b=$a++; . Hapa, kwanza thamani ya kutofautiana $a ilikuwa sawa na kutofautiana $b, na kisha thamani ya kutofautiana $a iliongezwa.

    -- (punguza/punguza thamani kwa moja)

    Kwa mfano, --$a . Na pia, kama ilivyo kwa ongezeko, kuna aina mbili za kurekodi: --$a na $a--

Waendeshaji wa Kazi

    Husawazisha kigezo kwa thamani mahususi: $a = 5

    Nyongeza ikifuatiwa na mgawo wa matokeo. Kwa mfano: $a=12; $a += 5; mwangwi $a; // sawa na 17

    Utoaji ukifuatiwa na ugawaji wa matokeo. Kwa mfano: $a=12; $a -= 5; mwangwi $a; // sawa na 7

    Kuzidisha ikifuatiwa na ugawaji wa matokeo: $a=12; $a *= 5; mwangwi $a; // ni sawa na 60

    Mgawanyiko ukifuatiwa na ugawaji wa matokeo: $a=12; $a /= 5; mwangwi $a; // sawa na 2.4

    Unganisha safu na ugawanye matokeo. Inatumika kwa mistari miwili. Ikiwa vigezo havihifadhi kamba, lakini, kwa mfano, nambari, basi maadili yao yanabadilishwa kuwa kamba na kisha operesheni inafanywa: $ a = 12; $a .= 5; mwangwi $a; // sawa na 125 // sawa na $b="12"; $b .="5"; // sawa na 125

    Kupata sehemu iliyobaki na kugawa matokeo: $a=12; $a %= 5; mwangwi $a; // sawa na 2

Operesheni za kulinganisha

Shughuli za kulinganisha kawaida hutumiwa katika ujenzi wa masharti wakati inahitajika kulinganisha maadili mawili na, kulingana na matokeo ya kulinganisha, fanya vitendo fulani. Operesheni zifuatazo za kulinganisha zinapatikana.

    Opereta ya usawa inalinganisha maadili mawili, na ikiwa ni sawa, inarudisha kweli, vinginevyo inarudisha uwongo: $a == 5

    Opereta ya kitambulisho pia inalinganisha thamani mbili, na ikiwa ni sawa, inarudisha kweli, vinginevyo inarudisha uwongo: $a === 5

    Inalinganisha thamani mbili, na ikiwa si sawa, inarudisha kweli, vinginevyo inarejesha sivyo: $a != 5

    Inalinganisha thamani mbili, na ikiwa si sawa, inarudisha kweli, vinginevyo inarejesha sivyo: $a !== 5

    Inalinganisha thamani mbili, na ikiwa ya kwanza ni kubwa kuliko ya pili, basi inarejesha kweli, vinginevyo inarejesha sivyo: $a > 5

    Inalinganisha thamani mbili, na ikiwa ya kwanza ni chini ya ya pili, basi inarejesha kweli, vinginevyo inarejesha sivyo: $a< 5

    Inalinganisha thamani mbili, na ikiwa ya kwanza ni kubwa kuliko au sawa na ya pili, basi inarudisha kweli, vinginevyo inarejesha sivyo: $a >= 5

    Inalinganisha thamani mbili, na ikiwa ya kwanza ni ndogo kuliko au sawa na ya pili, basi inarudisha kweli, vinginevyo inarejesha sivyo: $a<= 5

Usawa na mendeshaji kitambulisho

Waendeshaji wote wawili hulinganisha misemo miwili na kurudisha kweli ikiwa misemo ni sawa. Lakini kuna tofauti kati yao. Ikiwa operesheni ya usawa inachukua maadili mawili ya aina tofauti, basi hupunguzwa hadi moja - ile ambayo mkalimani hupata bora. Kwa mfano:

Ni wazi, anuwai huhifadhi maadili tofauti ya aina tofauti. Lakini ikilinganishwa, watapunguzwa kwa aina moja - nambari. Na variable $a itapunguzwa hadi nambari 22. Na mwisho, vigezo vyote viwili vitakuwa sawa.

Au, kwa mfano, vigezo vifuatavyo pia vitakuwa sawa:

$a = uongo; $ b = 0;

Ili kuzuia hali kama hizi, operesheni ya usawa hutumiwa, ambayo haizingatii tu thamani, lakini pia aina ya kutofautisha:

$a = "22a"; $ b = 22; if($a===$b) echo "sawa"; mwingine echo "si sawa";

Sasa vigezo havitakuwa sawa.

Waendeshaji ukosefu wa usawa != na !== hufanya kazi vivyo hivyo.

Shughuli za kimantiki

Uendeshaji wa kimantiki kwa kawaida hutumiwa kuchanganya matokeo ya shughuli mbili za kulinganisha. Kwa mfano, tunahitaji kufanya kitendo fulani ikiwa hali kadhaa ni kweli. Operesheni zifuatazo za kimantiki zinapatikana:

    Hurejesha kweli ikiwa shughuli zote za ulinganisho zitarudi kuwa kweli, vinginevyo itarejesha sivyo: $a == 5 && $b = 6

    Sawa na && operesheni: $a == 5 na $b > 6

    Hurejesha kweli ikiwa angalau operesheni moja ya ulinganisho itarejesha kweli, vinginevyo itarejesha sivyo: $a == 5 || $ b = 6

    Sawa na operesheni || : $a< 5 or $b > 6

    Hurejesha kweli ikiwa operesheni ya kulinganisha itarudi kuwa sivyo: !($a >= 5)

    Hurejesha kweli ikiwa moja tu ya thamani ndiyo ya kweli. Ikiwa zote mbili ni kweli au hakuna si kweli, inarejesha sivyo. Kwa mfano: $a=12; $b=6; if($a xor $b) echo "kweli"; mwingine echo "uongo";

    Hapa matokeo ya utendakazi wa kimantiki yatakuwa ya uwongo kwani vijiwezo vyote viwili vina thamani maalum. Wacha tubadilishe nambari:

    $a=12; $b=NULL; if($a xor $b) echo "kweli"; mwingine echo "uongo";

    Hapa matokeo yatakuwa tayari kuwa kweli, kwani thamani ya kigezo kimoja haijawekwa. Ikiwa kigezo kina thamani NULL, basi katika utendakazi wa kimantiki thamani yake itachukuliwa kuwa sivyo

Shughuli kidogo

Uendeshaji wa biti hufanywa kwa biti za nambari. Nambari zinazingatiwa katika uwakilishi wa binary, kwa mfano, 2 katika uwakilishi wa binary ni 010, nambari ya 7 ni 111.

    & (kuzidisha kimantiki)

    Kuzidisha hufanywa kwa njia ndogo, na ikiwa operesheni zote mbili zina maadili kidogo sawa na 1, basi operesheni inarudi 1, vinginevyo nambari 0 inarudishwa. Kwa mfano: $a1 = 4; // 100 $ b1 = 5; //101 echo $a1 & $b1; // sawa na 4

    Hapa nambari 4 kwenye mfumo wa binary ni 100, na nambari 5 ni 101. Zidisha nambari kidogo kidogo na upate (1*1, 0*0, 0 *1) = 100, yaani, nambari 4 katika decimal. umbizo.

    | (Ongezeko la kimantiki)

    Sawa na kuzidisha kimantiki, operesheni pia inafanywa kwa tarakimu za binary, lakini sasa moja inarudishwa ikiwa angalau nambari moja katika tarakimu fulani ina moja. Kwa mfano: $ a1 = 4; // 100 $ b1 = 5; //101 echo $a1 | $b1; // sawa na 5

    ~ (kukanusha kimantiki)

    hugeuza biti zote: ikiwa thamani kidogo ni 1, basi inakuwa sifuri, na kinyume chake. $ b = 5; mwangwi ~$b;

    x<

    x>>y - huhamisha nambari x kwenda kulia kwa tarakimu y. Kwa mfano, 16>>1 hubadilisha 16 (ambayo ni 10000 kwenye mfumo wa jozi) sehemu moja kwenda kulia, na kusababisha 1000 au 8 kwa desimali.

Kamba za Kuunganisha

Opereta ya nukta hutumika kuunganisha masharti. Kwa mfano, wacha tuunganishe mistari kadhaa:

$a="Hujambo,"; $b="ulimwengu"; mwangwi $a . $b . "!";

Ikiwa vigezo vinawakilisha aina nyingine zaidi ya kamba, kama vile nambari, basi maadili yao yanabadilishwa kuwa kamba na kisha operesheni ya kuunganisha kamba pia hutokea.


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 wa nukuu fupi ya 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 wa 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 wa 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!


PHP inasaidia kiwango kifuatacho waendeshaji mantiki: "NA" na "&&" (mantiki NA), "AU" na "||" (mantiki AU), "!" (mantiki SI) na "XOR" (kipekee AU). Zote hutumika katika misemo ya kimantiki ili kubainisha kozi moja au nyingine ya utekelezaji wa programu kulingana na matokeo yaliyorejeshwa na usemi na kuhusiana na waendeshaji binary, isipokuwa opereta "!" , ambayo sio ya kawaida. Wakati wa kutumia waendeshaji wenye mantiki, uendeshaji wao hubadilishwa kuwa aina ya data ya Boolean (), na matokeo inategemea maadili yaliyotolewa ya uendeshaji na aina ya operator wa kimantiki (tazama jedwali Na. 1).

Jedwali Na. 1. Waendeshaji wa mantiki

Tofauti kati ya "AND" na "&&" waendeshaji, na "OR" na "||" ni kwamba waendeshaji "AND" , "OR" na "XOR" wana utangulizi wa chini zaidi, ambao ni wa chini zaidi kuliko waendeshaji mgawo (angalia jedwali la opereta wa PHP).

Ni muhimu kuelewa jinsi mkalimani anachakata misemo ya Boolean. Ikiwa katika usemi na opereta "||" operesheni ya kwanza (kushoto) itakuwa na thamani ya kweli au katika usemi na opereta "&&" operesheni ya kwanza itakuwa na thamani false , kisha operesheni ya pili (kulia) haitahesabiwa tena. Hii ni kutokana na ukweli kwamba matokeo ya mwisho katika matukio hayo hayatabadilika (tazama jedwali Na. 1), na kwa hiyo hakuna haja ya kutumia muda kusindika msimbo wa operand ya pili. Walakini, unahitaji kuwa mwangalifu usiweke nambari kwenye operesheni sahihi ambayo utendakazi sahihi wa programu unaweza kutegemea.

Matumizi ya waendeshaji wa mantiki yanaonyeshwa katika mfano No.

uongo $a=0||uongo; //Sasa $a==kweli, kwa sababu 5-> kweli na 8-> kweli $a=5& //Sasa $a==false, kwa sababu "0"->uongo $a="0"& //Sasa $a==kweli $a=!uongo; //Sasa $a==uongo, kwa sababu 5->kweli $a=!5; /* Chaguo la kukokotoa foo() halitaitwa kwa sababu ya shunti */ $a=(false&&foo()); $b=(true||foo()); $c=(uongo na foo()); $d=(kweli au foo()); /* Tofauti "||" kutoka "au" na "&&" kutoka "na" */ // Vitendo kama ($a=(false||true)) $a=false||true; // Hutenda kama (($a=uongo) au kweli) $a=uongo au kweli; // Hutenda kama ($a=(uongo&&kweli)) $a=uongo& //Hutenda kama (($a=uongo) na kweli) $a=uongo na kweli; //Sasa $a==5, hufanya kama (($a=5) xor 0) $a=5 xor 0; //Sasa $a==5, hufanya kama (($a=5) na 0) $a=5 na 0; //Sasa $a==5, hufanya kama (($a=5) au 0) $a=5 au 0; //Sasa $a==kweli, hufanya kama ($a=(5||0)) $a=5||0; //Sasa $a==sivyo, hufanya kama ($a=(5&&0)) $a=5& //Sasa $a==kweli, hufanya kama ($a=(5 xor 6)) $a=(5 xor 6); ?>

Mfano Nambari 2. Kutumia Viendeshaji vya Boolean

Kwa hivyo, tayari tunajua jinsi ya kutekeleza nambari ambayo inakidhi hali fulani. Lakini hadi wakati huu kunaweza kuwa na hali moja tu. Je, ikiwa kanuni lazima itekelezwe ikiwa masharti kadhaa yatatimizwa mara moja?

Ili kutatua tatizo hili, kuna waendeshaji wenye mantiki:

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

Opereta &&, pia huitwa mantiki NA, hubadilisha thamani zilizo upande wa kushoto na kulia hadi aina ya Boolean, na kisha yenyewe hurejesha thamani ya Boolean: kweli ikiwa kushoto na kulia ni kweli, au sivyo ikiwa mojawapo ya masharti ni ya uwongo.

Kwa maneno mengine, ikiwa hali zote mbili ni kweli, basi && operator anarudi kweli. Hivi ndivyo jina la mwendeshaji linaonyesha.

Opereta || au mantiki AU inarudi kweli wakati angalau moja ya masharti mawili ni kweli:

5 | 1 > 2) mwangwi "Hali imetimizwa."; ?>

Katika nambari iliyo hapo juu, amri ya echo itatekelezwa kwa sababu moja ya masharti ni kweli.

Waendeshaji wote wenye mantiki katika PHP

Kati ya && na na waendeshaji, na vile vile kati ya || na au kuna tofauti kidogo - utaratibu wa utekelezaji.

Kama unavyojua, kuzidisha kuna kipaumbele cha juu kuliko kuongeza. Kwa hivyo, na na au waendeshaji wana kipaumbele cha chini kuliko opereta wa mgawo =. Matokeo yanaweza kuonekana katika mfano ufuatao:

Ajabu, sawa? Kwa kuwa y = ina kipaumbele cha juu, PHP itatafsiri nambari kama hii:

($ var = kweli) na uongo;

Wale. kwanza huweka $var kuwa kweli kisha hufanya operesheni ya kweli na ya uwongo, ambayo haina maana kwa sababu haiathiri thamani ya kutofautisha.

Ifuatayo ni jedwali lenye vipaumbele vya waendeshaji. Tayari umekutana na baadhi yao. Juu ya operator ni katika meza, juu ya kipaumbele chake.

  • ++ -- ~ (int) (elea) (kamba) (safu) (kitu) (bool) @
  • * / %
  • + - .
  • < <= > >=
  • == != === !== <> <=>
  • ? : (mwendeshaji wa mwisho)
  • = += -= *= **= /= .= %= &= |= ^= <<= >>=

Sasa tunaweza kuamua kwamba utangulizi wa waendeshaji kulinganisha (==, !=, nk.) ni wa juu kuliko ule wa waendeshaji wenye mantiki. Taarifa hii itakuwa ya manufaa kwetu kukamilisha kazi.

PHP inasaidia waendeshaji kimantiki wa kawaida NA na && , AU na || ,! (sio) na XOR . Waendeshaji kimantiki hukuruhusu kulinganisha matokeo ya operesheni mbili (thamani au usemi) ili kubaini ikiwa moja au zote mbili zinarejesha kweli au sivyo na uchague kuendelea kutekeleza hati ipasavyo kulingana na thamani iliyorejeshwa. Kama waendeshaji kulinganisha, waendeshaji kimantiki hurejesha thamani moja ya Boolean - kweli au si kweli, kulingana na thamani za pande zote za opereta.

Mantiki AU (AU na ||)

Opereta ya kimantiki AU inaashiriwa kama AU au || . Inafanya operesheni ya kimantiki AU kwenye operesheni mbili. Ikiwa operesheni moja au zote mbili ni kweli, itarudi kuwa kweli. Ikiwa operesheni zote mbili ni za uwongo, itarudi kuwa sivyo. Labda una swali: kwa nini walifanya matoleo mawili ya mwendeshaji mmoja? Hoja ya lahaja mbili tofauti za opereta wa kimantiki AU ni kwamba zinafanya kazi kwa vipaumbele tofauti.

Kwanza, hebu tuangalie jinsi || mwendeshaji hufanya kazi. . Na kwa hivyo, ikiwa operesheni yake moja au zote mbili ni za kweli, inarudi true . Iwapo watendaji wote wawili watarudisha thamani zisizo za kweli, itarejesha uongo .

Opereta AU hufanya kazi sawa na || mwendeshaji. isipokuwa moja, ikiwa opereta AU inatumiwa na kazi, itatathimini kwanza na kurudisha thamani ya operesheni ya kushoto, vinginevyo inafanya kazi sawa kabisa na opereta ||. , i.e. ikiwa operesheni yake moja au zote mbili ni za kweli, inarudi true . Operesheni zote mbili zikirudi kuwa sivyo, zitarudi kuwa sivyo .

Ili kuifanya iwe wazi jinsi wanavyofanya kazi, wacha tutoe mfano ufuatao:

1. echo $var2; // uongo haujachapishwa // ($ var3 = 0) au 3 $ var3 = 0 au 3; mwangwi"
$var3"; // => 0 ?>

Ulinganisho wowote na waendeshaji wa kimantiki wanaweza kuunganishwa katika miundo ngumu zaidi:

Kuna jambo moja muhimu zaidi linalostahili kutajwa kuhusu waendeshaji AU na ||. . Opereta ya kimantiki AU huanza tathmini yake kwa uendeshaji wake wa kushoto; ikiwa itarudi kuwa kweli, basi operesheni sahihi haitatathminiwa. Hii inaokoa muda wa utekelezaji, lakini uangalifu lazima uchukuliwe ili kuhakikisha kwamba msimbo ambao utendakazi sahihi wa programu unaweza kutegemea haujawekwa kwenye uendeshaji wa mkono wa kulia.

Mantiki NA (NA na &&)

Opereta wa kimantiki NA ameashiriwa kama AND au && . Inafanya kazi ya kimantiki NA kwenye operesheni mbili. Inarudi kuwa kweli ikiwa na tu ikiwa operesheni zote mbili zitatathmini kweli . Ikiwa operesheni moja au zote mbili zitarejesha sivyo, opereta atarejesha sivyo. Maana ya matoleo mawili tofauti ya opereta "mantiki NA" ni sawa na waendeshaji wawili wa awali, yaani, kwamba wanafanya kazi kwa vipaumbele tofauti.

Kwanza, hebu tuangalie jinsi && operator hufanya kazi. Na kwa hivyo, ikiwa operesheni zake zote mbili ni za kweli, inarudi true . Iwapo angalau oparesheni yake moja au zote mbili zitarudi kuwa sivyo , pia itarejesha sivyo .

Opereta AND hufanya kazi sawa na && opereta isipokuwa moja, ikiwa opereta AND itatumiwa na kazi, itatathimini kwanza na kurudisha thamani ya operesheni ya kushoto, vinginevyo inafanya kazi sawa kabisa na opereta &&. Iwapo angalau moja ya uendeshaji wake itarejesha sivyo, itarejesha sivyo, na ikiwa oparesheni zote mbili zitarudi sivyo, zitarejesha sivyo.

Ili kuelewa, hebu sasa tuangalie jinsi hii inavyofanya kazi katika mazoezi:

$bar3"; // => 9 ?>

Kipekee AU (XOR)

Opereta ya kipekee AU inaonyeshwa kama XOR. Inarudi kweli ikiwa moja na moja tu ya uendeshaji wake ni kweli. Ikiwa operesheni zote mbili ni za kweli, opereta atarejesha sivyo.

Kwa sababu opereta wa XOR ana utangulizi sawa na waendeshaji AND na OR (chini kuliko opereta mgawo), na hutumika katika usemi wa mgawo, kwanza hutathmini na kurudisha thamani ya operesheni ya kushoto.

6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(xor kweli); // var_dump ya uwongo ((2< 3) xor (5 != 5)); // true ?>

Mantiki SI (!)

Mendeshaji wa kimantiki SIO, anayeitwa pia kukanusha, anaonyeshwa na ishara! . Ni opereta isiyo ya kawaida iliyowekwa kabla ya operesheni moja. Opereta ya kimantiki ya NOT inatumika kugeuza thamani ya kimantiki ya uendeshaji wake na kila mara hurejesha true au false .

Ikiwa unahitaji kubadilisha thamani ya usemi, kama vile a && b , utahitaji kutumia mabano: !(a && b) . Pia kwa msaada wa operator! Unaweza kubadilisha thamani yoyote ya x kuwa sawa na Boolean kwa kutumia opereta: !!x mara mbili.