Mantiki ngumu inawezekana katika PHP? PHP: Waendeshaji mantiki - Mwongozo. Shughuli za kulinganisha na sheria ya uwongo

Somo litashughulikia taarifa za masharti za php: taarifa ya if na taarifa ya kubadili

Taarifa za masharti za PHP zinawakilishwa na miundo mitatu kuu:

  • mwendeshaji wa hali kama,
  • kubadili operator kubadili
  • Na mwendeshaji wa ternary.

Hebu tuangalie kwa karibu kila mmoja wao.

PHP ikiwa taarifa

Kielelezo 3.1. Taarifa ya IF ya masharti, toleo fupi


Mchele. 3.2. KAMA VINGINEVYO Sintaksia ya Taarifa ya Masharti


Mchele. 3.3. Sintaksia kamili ya taarifa ya masharti ya IF elseif

Hebu tufanye muhtasari:

Sintaksia kamili:

ikiwa (hali) ( // ikiwa hali ni ya kweli1; mwendeshaji2; ) vinginevyoif(hali) ( mwendeshaji1; ... ) vinginevyo ( // ikiwa hali ni ya uwongo1; mwendeshaji2;)

  • Sintaksia iliyofupishwa inaweza usiwe na sehemu za kifungu kingine na usiwe na sharti la ziada
  • Badala ya neno la kazi elseif, unaweza kuandika vingine ikiwa (kando)
  • Kunaweza kuwa na zingine kadhaa katika moja ikiwa itaundwa. Semi ya kwanza ikiwa ni sawa na TRUE itatekelezwa.
  • Ikiwa kuna hali mbadala, ikiwa ni lazima, kifungu kingine kiwe cha mwisho katika sintaksia.

Taarifa ya masharti inaweza kutumia koloni: badala ya braces curly. Katika kesi hii, taarifa inaisha na neno kisaidizi endif

Mchele. 3.4. Taarifa ya masharti If na Endif katika php

Mfano:

if($x > $y): echo $x." ni kubwa kuliko ".$y; elseif($x == $y): // unapotumia ":" huwezi kuandika tofauti kama echo $x." ni sawa na ".$y; kingine: echo $x." not > and not = ".$y; endif;

Muhimu: Wakati wa kutumia koloni badala ya braces curly katika ujenzi, vinginevyoif haiwezi kuandikwa kwa maneno mawili!

Uendeshaji wa kimantiki katika hali fulani

Hali ikiwa kwenye mabano inaweza kuwa na shughuli zifuatazo:

Mfano: angalia thamani ya tofauti ya nambari: ikiwa ni chini ya au sawa na 10, onyesha ujumbe "nambari chini ya au sawa na 10", vinginevyo onyesha ujumbe "idadi kubwa kuliko 10"


Suluhisho:

$idadi=15; ikiwa (nambari ya $<=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Vizuizi vya nambari za PHP vinaweza kuvunjwa, wacha tuangalie mfano:

Mfano: Onyesha msimbo wa html kwenye skrini "sawa na 4", ikiwa tofauti $a ni sawa na 4


Suluhisho 1:
1 2 3 4

2 Suluhisho:

1 2 3 A ni sawa na 4

A ni sawa na 4

php kazi 3_1: Onyesha tafsiri ya rangi kutoka kwa Kiingereza hadi Kirusi, ukiangalia thamani ya kutofautisha (ambayo rangi imepewa: $a="blue").


php kazi 3_2: Pata idadi ya juu zaidi ya nambari tatu

Shughuli za kulinganisha na sheria ya uwongo

Ikiwa imeundwa katika mabano lazima iwe na usemi wa kimantiki au tofauti, ambayo inazingatiwa kutoka kwa mtazamo wa aljebra ya mantiki, kurudisha thamani ziwe za kweli au za uwongo.

Wale. kigezo kimoja kinaweza kufanya kama hali. Hebu tuangalie mfano:

1 2 3 4 $a = 1; ikiwa ($a) ( echo $a; )

$a=1; ikiwa ($a) ( echo $a; )

Katika mfano, mtafsiri wa lugha ya PHP atazingatia kutofautisha katika mabano kuwa sheria ya uwongo:

Kanuni ya UONGO au kile kinachochukuliwa kuwa si kweli:

  • mantiki Uongo
  • sifuri nzima ( 0 )
  • sifuri halisi ( 0.0 )
  • mstari tupu na kamba «0»
  • safu isiyo na vipengele
  • kitu bila vigezo
  • aina maalum NULL

Kwa hivyo, katika mfano unaozingatiwa, tofauti $a ni sawa na moja, ipasavyo hali itakuwa kweli na opereta echo $a; itaonyesha thamani ya kutofautisha.

php kazi 3_3: tofauti a yenye thamani ya mfuatano imetolewa. Ikiwa a ni sawa na jina, basi chapisha "Halo, jina!", ikiwa a ni sawa na thamani tupu, basi pato "Habari Mgeni!"

Miundo ya kimantiki NA AU na SIO katika mwendeshaji wa masharti

  1. Wakati mwingine ni muhimu kutoa kwa ajili ya kutimiza masharti kadhaa wakati huo huo. Kisha masharti yanaunganishwa mwendeshaji wa kimantiki NA — && :
  2. $a=1; ikiwa ($a>0 || $a>1) ( echo "a > 0 au a > 1"; )

  3. Ili kuonyesha ikiwa hali ni ya uwongo, tumia mantiki operator NOT — ! :
  4. 1 2 3 4 $a = 1; ikiwa (! ($a< 0 ) ) { echo "a не < 0" ; }

    $a=1; ikiwa (!($a<0)) { echo "a не < 0"; }

Badilisha PHP ya opereta

Opereta ya kubadili au "kubadili" inachukua nafasi ya mfululizo kadhaa ikiwa inajenga. Kwa kufanya hivyo, inalinganisha tofauti moja na maadili mengi. Kwa hivyo, hii ndiyo njia inayofaa zaidi kwa kuandaa matawi mengi.

Sintaksia:

1 2 3 4 5 6 7 8 9 10 kubadili ($variable) (kesi "thamani1" : opereta1 ; vunja ; kesi "thamani2" : opereta2 ; vunja ; kisa "thamani3" : opereta3 ; vunja ; [ chaguo-msingi : opereta4 ; vunja; ] )

switch($variable)( kesi "thamani1": opereta1; kuvunja; kesi "thamani2": opereta2; mapumziko; kisa "thamani3": opereta3; mapumziko; )

  • Opereta anaweza kuangalia maadili ya kamba zote mbili (kisha zimeainishwa katika nukuu) na nambari za nambari (bila nukuu).
  • Taarifa ya mapumziko katika ujenzi inahitajika. Inatoka kwenye ujenzi ikiwa hali ni kweli na opereta inayolingana na hali hiyo inatekelezwa. Bila mapumziko, taarifa zote za kesi zitatekelezwa bila kujali ukweli wao.

Mchele. 3.5. Taarifa ya Kubadilisha Masharti


Mfano: safu yenye majina kamili ya kiume imetolewa. Angalia kipengele cha kwanza cha safu na, kulingana na jina, onyesha salamu na jina fupi.


Suluhisho:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $names = safu ("Ivan" , "Peter" , "Semyon" ) ; kubadili ($majina [ 0 ] ) ( kesi "Peter" : echo "Habari, Petya!" ; break ; kesi "Ivan" : echo "Hujambo, Vanya!" ; break ; kesi "Semyon" : echo "Hi, Vanya! " ; break ; default : echo "Hi, $majina!"; mapumziko; )

$names=array("Ivan","Peter","Semyon"); switch($names)( kesi "Peter": echo "Hujambo, Petya!"; break; kesi "Ivan": echo "Hujambo, Vanya!"; break; kesi "Semyon": echo "Hujambo, Vanya!"; mapumziko ; chaguo-msingi: mwangwi "Hujambo, $names!"; break;)

php kazi 3_4:

  • Unda tofauti ya siku ya $ na uipe thamani ya nambari isiyo halali
  • Kwa kutumia muundo wa kubadili, chapisha kifungu "Ni siku ya kazi", ikiwa thamani ya mabadiliko ya siku ya $day iko ndani ya anuwai ya nambari kutoka 1 hadi 5 (pamoja)
  • Chapisha kifungu "Ni siku ya mapumziko", ikiwa thamani ya mabadiliko ya $day ni sawa na nambari 6 au 7
  • Chapisha kifungu "Siku isiyojulikana", ikiwa thamani ya tofauti ya $day haingii ndani ya anuwai ya nambari kutoka 1 hadi 7 (pamoja)

Kamilisha nambari:

1 2 3 4 5 6 7 8 9 10 11 12 ... kubadili (... ) ( kesi 1: kesi 2: ... mwangwi "Ni siku ya kazi"; mapumziko; kesi 6: ... chaguo-msingi: ...)

Switch(...)( kesi 1: kesi 2: ... echo "Ni siku ya kazi"; mapumziko; kesi 6: ... chaguo-msingi: ... )

Opereta wa tatu wa PHP

Opereta wa Ternary, i.e. ikiwa na oparesheni tatu, ina syntax rahisi ambayo upande wa kushoto wa ? hali imeandikwa, na upande wa kulia ni waendeshaji wawili waliotenganishwa na ishara: , upande wa kushoto wa ishara operator hutekelezwa ikiwa hali ni ya kweli, na kwa haki ya ishara: operator anatekelezwa ikiwa hali ni. uongo.

hali? mwendeshaji1: mwendeshaji2;

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 inaashiria 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, itarejesha 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, itatathmini 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 // Kwanza kigezo kinapewa thamani ya uwongo, na kisha operesheni ya pili inatathminiwa // Kitendo cha kipaumbele: ($ var2 = uongo) au kweli $var2 = uongo au kweli; 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 , 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.

Kauli kuu mbili zinazotoa miundo ya matawi yenye masharti ni if ​​and switch. Inatumika sana ikiwa taarifa inatumika katika miundo ya kuruka kwa masharti. Kwa upande mwingine, katika hali fulani, haswa ikiwa itabidi upitie moja ya matawi mengi kulingana na thamani ya usemi mmoja, na utumiaji wa idadi ya ikiwa taarifa husababisha nambari ngumu zaidi, taarifa ya kubadili inakuwa rahisi zaidi. .

Kabla ya kusoma waendeshaji hawa, unahitaji kuelewa misemo na shughuli za kimantiki.

Shughuli za kimantiki

Uendeshaji wa kimantiki hukuruhusu kuchanganya maadili ya kimantiki (pia huitwa maadili ya ukweli) ili kutoa maadili mapya ya kimantiki. Kama inavyoonyeshwa kwenye jedwali hapa chini, PHP inasaidia waendeshaji kimantiki wa kawaida (na, au, sivyo, na xor), huku mbili za kwanza zikiwa na matoleo mbadala.

Uendeshaji wa Mantiki wa PHP
Operesheni Maelezo
na Operesheni ambayo matokeo yake ni kweli ikiwa na tu ikiwa operesheni zake zote mbili ni za kweli
au Operesheni ambayo matokeo yake ni kweli ikiwa moja ya operesheni zake (au operesheni zote mbili) ni kweli
! Operesheni ambayo matokeo yake ni kweli ikiwa operesheni yake moja (iliyotolewa kwa kulia kwa ishara ya operesheni) ni ya uwongo, na si kweli ikiwa uendeshaji wake ni wa kweli.
xor Operesheni ambayo matokeo yake ni kweli ikiwa mojawapo ya uendeshaji wake (lakini si zote mbili) ni kweli
&& Sawa na opereta, lakini hufunga waendeshaji wake kwa ukali zaidi kuliko mwendeshaji huyu
|| Sawa na opereta, lakini hufunga waendeshaji wake kwa ukali zaidi kuliko mwendeshaji huyu

Operesheni && na || inapaswa kujulikana kwa watengeneza programu C. Operesheni! kawaida huitwa si kwa sababu inakuwa ukanushaji wa oparesheni ambayo inatumika.

Ili kupima kama operesheni zote mbili ni TRUE, unatumia AND operator, ambayo inaweza pia kuandikwa kama ampersand mbili (&&). Waendeshaji wa AND na && ni waendeshaji kimantiki; tofauti pekee ni kwamba && opereta ina utangulizi wa juu zaidi kuliko opereta AND. Hali hiyo hiyo inatumika kwa waendeshaji AU na ||. Opereta AND hurejesha TRUE ikiwa tu operesheni zote mbili ni TRUE; vinginevyo, FALSE inarudishwa.

Ili kuangalia kama angalau operesheni moja ni TRUE, unatumia opereta AU, ambayo inaweza pia kuandikwa kama laini mbili wima (||). Opereta huyu hurejesha TRUE ikiwa angalau moja ya operesheni zake ni TRUE.

Wakati wa kutumia Opereta AU katika programu, hitilafu za kimantiki zinaweza kuonekana. Ikiwa PHP itagundua kuwa operesheni ya kwanza ni TRUE, haitatathmini thamani ya operesheni ya pili. Hii inaokoa wakati wa utekelezaji, lakini lazima uwe mwangalifu ili kuhakikisha kuwa nambari ambayo programu inategemea ili kuendeshwa kwa usahihi haijawekwa kwenye operesheni ya pili.

Opereta wa XOR hukuruhusu kuangalia ikiwa ni moja tu ya operesheni (lakini sio zote mbili) ambazo ni TRUE. Opereta huyu hurejesha TRUE ikiwa operesheni yake moja tu ndiyo TRUE. Ikiwa operesheni zote mbili ni TRUE, opereta atarudisha FALSE.

Unaweza kubadilisha thamani ya kimantiki kwa kutumia SIO opereta, ambayo mara nyingi huandikwa kama alama ya mshangao (!). Hurejesha TRUE ikiwa oparesheni ni FALSE na FALSE ikiwa operesheni ni TRUE.

Jedwali hapa chini linaonyesha misemo ya Boolean na matokeo yake:

Operesheni za kulinganisha

Jedwali hapa chini linaonyesha shughuli za kulinganisha ambazo zinaweza kutumika na nambari au mifuatano:

Operesheni za kulinganisha
Operesheni Jina Maelezo
== Sawa Operesheni ambayo matokeo yake ni kweli ikiwa uendeshaji wake ni sawa na sivyo vinginevyo
!= Sio sawa Operesheni ambayo matokeo yake ni ya uwongo ikiwa uendeshaji wake ni sawa na kweli vinginevyo
< Chini Operesheni ambayo matokeo yake ni ya kweli ikiwa operesheni ya kushoto ni chini ya uendeshaji wa kulia, na sivyo vinginevyo
> Zaidi Operesheni ambayo matokeo yake ni kweli ikiwa operesheni ya kushoto ni kubwa kuliko ya kulia, na sivyo vinginevyo
<= Chini au sawa Operesheni ambayo matokeo yake ni kweli ikiwa operesheni ya kushoto ni chini ya au sawa na operesheni ya kulia, na sivyo vinginevyo
>= Zaidi au sawa Operesheni ambayo matokeo yake ni kweli ikiwa operesheni ya kushoto ni kubwa kuliko au sawa na operesheni ya kulia, na sivyo vinginevyo
=== Sawa Operesheni ambayo matokeo yake ni kweli ikiwa operesheni zote mbili ni sawa na za aina moja, na sivyo vinginevyo

Hitilafu moja ya kawaida unayohitaji kufanya sio kuchanganya opereta wa mgawo (=) na opereta wa kulinganisha (==).

Kipaumbele cha uendeshaji

Bila shaka, mtu haipaswi kutumia zaidi mtindo wa programu ambayo mlolongo wa shughuli huamua hasa na matumizi ya sheria za utangulizi, kwa kuwa kanuni iliyoandikwa kwa mtindo huu ni vigumu kuelewa kwa wale ambao baadaye huisoma, lakini ni lazima ieleweke kwamba kulinganisha. shughuli zina kipaumbele cha juu kuliko shughuli za kimantiki. Hii inamaanisha kuwa taarifa iliyo na usemi wa hundi kama hii hapa chini

Nambari ya PHP $ var1 = 14; $ var2 = 15; ikiwa (($var1< $var2) && ($var2 < 20)) echo "$var2 больше $var1 но меньше 20";

inaweza kuandikwa upya kama

Nambari ya PHP ... ikiwa ($var1< $var2 && $var2 < 20) ...

kama-mwingine kauli

Maagizo kama inaruhusu kizuizi cha msimbo kutekelezwa ikiwa usemi wa masharti katika maagizo haya utatathminiwa kuwa TRUE; vinginevyo kizuizi cha nambari hakitekelezwi. Usemi wowote unaweza kutumika kama hali, ikijumuisha majaribio ya thamani isiyo sifuri, usawa, NULL inayohusisha vigeu na thamani zinazorejeshwa na chaguo za kukokotoa.

Haijalishi ni sharti gani za kibinafsi zinazounda sentensi ya masharti. Ikiwa hali ni kweli, msimbo wa programu iliyoambatanishwa katika viunga vya curly (()) hutekelezwa. La sivyo, PHP inapuuza na kuendelea na kuangalia hali ya pili, ikiangalia masharti yote uliyoandika hadi ifikie taarifa. mwingine, baada ya hapo itatekeleza kizuizi hiki kiotomatiki. Taarifa nyingine ni hiari.

Syntax ya if taarifa ni:

Ikiwa (usemi wa masharti) (block ya msimbo wa programu;)

Ikiwa matokeo ya kutathmini usemi wa masharti ni TRUE, basi kizuizi cha msimbo wa programu iko baada yake itatekelezwa. Katika mfano ufuatao, ikiwa $username imewekwa kuwa "Msimamizi", ujumbe wa kukaribisha utaonyeshwa. Vinginevyo hakuna kitakachotokea:

Nambari ya PHP $username = "Msimamizi"; ikiwa ($username == "Admin") ( echo "Karibu kwenye ukurasa wa msimamizi."; )

Ikiwa kizuizi cha msimbo wa programu kina maagizo moja tu, basi braces za curly ni za hiari, hata hivyo, ni tabia nzuri ya kuzitumia daima, kwa kuwa hufanya msimbo iwe rahisi kusoma na kuhariri.

Taarifa ya hiari nyingine ni kizuizi cha msimbo ambacho hutekelezwa kwa chaguo-msingi wakati usemi wa masharti unatathminiwa kuwa FALSE. Taarifa nyingine haiwezi kutumika kando na if taarifa kwa sababu haina usemi wake wa masharti. Hiyo ni, vinginevyo na ikiwa inapaswa kuwa pamoja kila wakati katika nambari yako:

kama na taarifa nyingine $username = "hakuna msimamizi"; ikiwa ($username == "Admin") ( echo "Karibu kwenye ukurasa wa msimamizi."; ) vinginevyo ( echo "Karibu kwa ukurasa wa mtumiaji."; )

Kumbuka kufunga kizuizi cha msimbo katika taarifa ya if kwa brashi iliyopinda ikiwa utaweka brashi iliyopinda mwanzoni mwa kizuizi. Kizuizi kingine lazima pia kiwe na viunga vilivyopindapinda vinavyofungua na kufunga, kama tu kizuizi cha if.

Hii yote ni nzuri, isipokuwa wakati unahitaji kuangalia hali kadhaa mfululizo. Maelekezo yanafaa kwa hili vinginevyo. Huruhusu masharti ya ziada kujaribiwa hadi kweli ipatikane au kizuizi kingine kifikiwe. Kila taarifa ya elseif ina msimbo wake uliowekwa mara baada ya usemi wa masharti wa taarifa ya elseif. Kauli ya elseif inakuja baada ya kauli ya if na kabla ya kauli nyingine, ikiwa ipo.

Syntax ya taarifa ya elseif ni ngumu zaidi, lakini mfano ufuatao utakusaidia kuielewa:

Kuangalia hali nyingi $username = "Mgeni"; ikiwa ($username == "Admin") ( echo "Karibu kwenye ukurasa wa msimamizi."; ) elseif ($username == "Guest") ( echo "Kuangalia hakupatikani."; ) vinginevyo ( echo "Karibu kwenye ukurasa mtumiaji.";)

Hapa hali mbili zinaangaliwa na, kulingana na thamani ya kutofautiana kwa jina la mtumiaji, vitendo tofauti vinafanywa. Na bado kuna fursa ya kufanya kitu ikiwa thamani ya kutofautiana inatofautiana na mbili za kwanza.

Opereta wa Ternary?:

Opereta?: Opereta ni opereta wa ternary (ternary) ambaye huchukua operesheni tatu. Inafanya kazi sawa na if taarifa, lakini inarudisha thamani ya mojawapo ya maneno mawili. Usemi ambao utatathminiwa huamuliwa na usemi wa masharti. Koloni (:) hutumika kama kitenganishi cha usemi:

(hali)? evaluate_if_condition_true: evaluate_if_condition_false;

Mfano ulio hapa chini hukagua thamani na kurejesha mifuatano tofauti kulingana na ikiwa ni TRUE au FALSE:

Kuunda ujumbe kwa kutumia opereta ? $logged_in = TRUE; $ mtumiaji = "Igor"; $bango = (!$logged_in) ? "Jiandikishe!" : "Karibu tena, $ mtumiaji!"; echo $ bendera;

Ni dhahiri kwamba kauli hiyo hapo juu ni sawa na kauli ifuatayo:

Nambari ya PHP $logged_in = TRUE; $ mtumiaji = "Igor"; ikiwa (!$logged_in) ( $banner = "Register!"; ) else ( $banner = "Karibu tena, $user!"; ) echo $banner;

kubadili kauli

Maagizo kubadili inalinganisha usemi na thamani nyingi. Kama sheria, kutofautisha hutumiwa kama usemi, kulingana na thamani ambayo kizuizi fulani cha nambari lazima kitekelezwe. Kwa mfano, fikiria tofauti ya kitendo cha $ ambayo inaweza kuwa na maadili "ADD", "MODIFY" (badilisha) na "FUTA" (futa). Taarifa ya ubadilishaji hurahisisha kufafanua kizuizi cha msimbo ambacho kinapaswa kutekelezwa kwa kila moja ya maadili haya.

Ili kuonyesha tofauti kati ya if na kubadili kauli, hebu tujaribu kigezo dhidi ya thamani nyingi. Mfano ulio hapa chini unaonyesha msimbo wa programu ambao hutekeleza hundi kama hiyo kulingana na taarifa ya if, na katika mfano ufuatao, kulingana na taarifa ya kubadili:

Kujaribu dhidi ya moja ya maadili kadhaa (ikiwa ni taarifa) ikiwa ($action == "ADD") ( echo "Fanya nyongeza."; echo "Idadi ya maagizo katika kila kizuizi haina kikomo."; ) elseif ($action == "MODIFY") ( echo "Fanya mabadiliko ."; ) elseif ($action == "DELETE") ( echo "Fanya ufutaji."; ) Jaribio dhidi ya moja ya maadili kadhaa (badilisha taarifa) switch ($action) ( kesi "ADD": echo "Fanya nyongeza."; echo "Idadi ya maagizo katika kila kizuizi haina kikomo."; break; case "MODIFY": echo "Fanya mabadiliko."; break; kesi "DELETE" : echo "Fanya ufutaji."; vunja;)

Taarifa ya kubadili inachukua thamani karibu na neno kuu la kubadili na kuanza kuilinganisha na maadili yote karibu na maneno muhimu. kesi, kwa mpangilio wa eneo lao katika programu. Ikiwa mechi haipatikani, hakuna kizuizi chochote kinachotekelezwa. Mara tu mechi inapopatikana, kizuizi sambamba cha msimbo kinatekelezwa. Vizuizi vya nambari hapa chini pia vinatekelezwa - hadi mwisho wa taarifa ya ubadilishaji au hadi neno kuu mapumziko. Hii ni rahisi kwa kuandaa mchakato unaojumuisha hatua kadhaa mfululizo. Ikiwa mtumiaji tayari amekamilisha hatua kadhaa, ataweza kuendelea na mchakato huo kutoka mahali alipoishia.

Usemi ulio karibu na kauli ya kubadili lazima urejeshe thamani ya aina ya awali, kama vile nambari au mfuatano. Mkusanyiko unaweza tu kutumika kama kipengele tofauti ambacho kina thamani ya aina ya msingi.

Chaguo-msingi

Ikiwa thamani ya usemi wa masharti hailingani na chaguo zozote zinazopendekezwa katika taarifa za kesi, taarifa ya ubadilishaji katika kesi hii inakuruhusu kufanya kitu, kama vile taarifa nyingine ya if, elseif, another ujenzi. Ili kufanya hivyo, unahitaji kufanya maagizo kama chaguo la mwisho katika orodha ya uteuzi chaguo-msingi:

Kuunda Ujumbe wa Hitilafu kwa Kutumia Taarifa Chaguomsingi $action = "ONDOA"; switch ($action) ( kesi "ADD": echo "Fanya nyongeza."; echo "Idadi ya maagizo katika kila kizuizi haina kikomo."; break; case "MODIFY": echo "Fanya mabadiliko."; break; case "DELETE" : echo "Fanya ufutaji."; break; default: echo "Kosa: amri ya kitendo hairuhusiwi, ". "ADD, MODIFY na DELETE amri pekee ndizo zinaweza kutumika."; )

Mbali na ile ya kawaida, taarifa ya kubadili inasaidia syntax mbadala - ujenzi wa neno kuu kubadili/kumaliza, ikifafanua mwanzo na mwisho wa taarifa badala ya brashi zilizopinda:

Taarifa ya kubadili inaisha na neno muhimu endswitch kubadili ($action): kesi "ADD": echo "Fanya kuongeza."; echo "Idadi ya maagizo katika kila kizuizi haina ukomo."; mapumziko; kesi "MODIFY": echo "Fanya marekebisho."; mapumziko; kesi "DELETE": echo "Fanya ufutaji."; mapumziko; chaguo-msingi: echo "Kosa: $agizo la kitendo si halali,". "ADD, MODIFY na DELETE amri pekee ndizo zinaweza kutumika."; endswitch;

Kataza utekelezaji

Iwapo tu kizuizi cha msimbo unaolingana na thamani maalum ndicho kitakachotekelezwa, basi neno kuu la kuvunja linapaswa kuingizwa mwishoni mwa kizuizi hicho. Wakati mkalimani wa PHP anapokutana na neno kuu la kuvunja, itaendelea kutekeleza mstari baada ya kufunga brace curly ya taarifa ya kubadili (au neno kuu la mwisho). Lakini ikiwa hutumii taarifa ya mapumziko, basi hundi inaendelea katika matawi ya kesi zinazofuata za ujenzi wa kubadili. Chini ni mfano:

Nini kinatokea wakati hakuna taarifa za mapumziko $action="KUSANYIKO AGIZO"; switch ($action) ( kesi "ASSEMBLE ORDER": echo "Kusanya agizo.
"; kesi "PACKAGE": echo "Pack.
"; case "SHIP": echo "Peleka kwa mteja.
"; }

Ikiwa utofauti wa kitendo cha $ utawekwa kuwa "ASSEMBLE ORDER", matokeo ya kipande hiki yatakuwa kama ifuatavyo:

Kusanya agizo. Kufunga. Peleka kwa mteja.

Kwa kudhani kuwa hatua ya ujenzi tayari imekamilika na utofauti wa kitendo cha $ umewekwa kuwa "PACKAGE", matokeo yafuatayo yatapatikana:

Kufunga. Peleka kwa mteja.

Wakati mwingine, kutokuwa na taarifa ya mapumziko ni muhimu, kama katika mfano hapo juu ambapo hatua za utaratibu zinaundwa, lakini katika hali nyingi taarifa hii inapaswa kutumika.

Aina za data Mizunguko 1 2 3 4 5 6 7 8 9 10

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 inaweka $var kuwa kweli halafu inafanya 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 kiwango kifuatacho waendeshaji mantiki: "NA" na "&&" (mantiki NA), "AU" na "||" (mantiki AU), "!" (mantiki SI) na "XOR" (kipekee AU). Zote zinatumika 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 ya kimantiki yaliyopewa ya uendeshaji na aina ya operator wa kimantiki (tazama jedwali Na. 1).

Jedwali Nambari 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