Сонымен, біз сәйкес кодты қалай орындау керектігін білеміз белгілі бір шарт. Бірақ осы уақытқа дейін бір ғана шарт болуы мүмкін. Бірнеше шарт бірден орындалса, кодты орындау керек болса ше?

Бұл мәселені шешу үшін логикалық операторлар бар:

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

&& операторы да шақырылады логикалық ЖӘНЕ, сол және оң жақтағы мәндерді логикалық түрге түрлендіреді, содан кейін өзі логикалық мәнді қайтарады: сол және оң жақ дұрыс болса true немесе шарттардың бірі жалған болса, жалған.

Басқаша айтқанда, екі шарттың екеуі де ақиқат болса, && операторы ақиқат мәнін қайтарады. Бұл оператордың атауын көрсетеді.

Оператор || немесе логикалық НЕМЕСЕЕкі шарттың кем дегенде біреуі дұрыс болғанда true мәнін қайтарады:

5 || 1 > 2) жаңғырық «Шарт орындалды.»; ?>

Жоғарыдағы кодта echo пәрмені орындалады, себебі шарттардың бірі дұрыс.

РНР тіліндегі барлық логикалық операторлар

&& және және және операторлары арасында, сондай-ақ || арасында және немесе шамалы айырмашылық бар - орындалу тәртібі.

Өздеріңіз білетіндей, көбейту қосуға қарағанда жоғары басымдыққа ие. Сонымен, және және немесе операторларының = тағайындау операторына қарағанда басымдығы төмен. Нәтижені келесі мысалдан көруге болады:

Біртүрлі, иә? y = жоғары басымдыққа ие болғандықтан, PHP кодты келесідей түсіндіреді:

($var = шын) және жалған;

Анау. алдымен $var мәнін true мәніне орнатады, содан кейін ол шын және жалған әрекетті жасайды, бұл мағынасыз, себебі ол айнымалы мәнге әсер етпейді.

Төменде оператор басымдықтары бар кесте берілген. Сіз олардың кейбірімен танысып үлгердіңіз. Кестеде оператор неғұрлым жоғары болса, соғұрлым оның басымдығы жоғары болады.

  • ++ -- ~ (int) (float) (жол) (массив) (нысан) (bool) @
  • * / %
  • + - .
  • < <= > >=
  • == != === !== <> <=>
  • ? : (үштік оператор)
  • = += -= *= **= /= .= %= &= |= ^= <<= >>=

Енді салыстыру операторларының (==, !=, т.б.) басымдылығы логикалық операторларға қарағанда жоғары екенін анықтай аламыз. Бұл ақпарат бізге тапсырманы орындау үшін пайдалы болады.


Ең бастысы - әрекет ету оператор деректері- бұл шарт. ағылшын тілінен аударғанда дегенді білдіреді Егер. Шарт аргумент ретінде қабылданады (жақшада не жазылған). Шарт логикалық өрнек немесе логикалық айнымалы болуы мүмкін. Қарапайым тілмен айтқанда, өрнектің мағынасы келесідей болады:

Егер (шарт)(
шарт орындалды, мұны жасаңыз
}
басқа
{
шарт орындалмаса, оны басқаша орындаңыз
}
Шартты операцияның логикасы анық деп үміттенемін. Енді бір мысалды қарастырайық.

$a = 5;
$b = 25;

// Қазір назар аударыңыз! Шарты: $b $a мәнінен үлкен болса
// Белгілер > және< , как и в математике, обозначают больше и меньше
егер($b > $a)
{
// егер шарт орындалса, осы әрекетті орындаңыз
echo "$b $a-дан үлкен";
}
басқа
{
// егер орындалмаса, онда бұл
echo "$a $b-ден үлкен немесе оған тең";
}
?>
Демонстрация Дереккөздерді жүктеп алу
Нәтижесінде сценарий шығады 25 5 артық. Мысал өте қарапайым. Барлығы түсінікті деп үміттенемін. Енді мен күрделірек жағдайды қарастыруды ұсынамын, онда бірнеше шарттар орындалуы керек. Әрбір жаңа шарт негізгі шарттан кейін болады егер()- деп жазылатын көмекші басқа болса(). Ақыр соңында әдеттегідей болады басқа.

Тапсырма:Тестілеу мектепте жүргізіледі. Сценарий әр бағаны алу шарттарын және студенттің өз ұпайын біле отырып, ұпайды есептеуі керек. Мұны қалай жазуға болатынын көрейік және түсініктемені оқуды ұмытпаңыз.

$test = 82; // оқушы 82 ұпай жинаған тест жазды делік

// бестің бірінші шартын жаз
if($test > 90)
{
// егер шарт орындалса, осы әрекетті орындаңыз.
жаңғырық «Рейтинг 5»;
}
// && белгісі «және, одақ» дегенді білдіреді, егер екеуі де ақиқат болса, шарт орындалады
// яғни 91-ден аз және 80-нен жоғары балл болса, онда 4. Әйтпесе, шарттар әрі қарай оқылады.
басқа болса ($test< 91 && $test > 80)
{
жаңғырық «Рейтинг 4»;
}
басқа болса ($test< 81 && $test > 70)
{
жаңғырық «Рейтинг 3»;
}
басқа
{
echo «Тестті қайтадан жазуымыз керек...»;
}
?>
Демонстрация Дереккөздерді жүктеп алу
Демалуға да, қалыпты тест жазуға да үлгерген оқушымыз алады рейтинг 4! Жұмыс принципі анық деп үміттенемін.

Сондай-ақ шарт орындалған жағдайда ғана әрекет қажет болғанда шартты операцияның жұмысын қысқаша жазуға болады.

$жас = 19; // жасына байланысты айнымалы

Егер ($жас > 17)(
echo "Болды! Мен қалағанымды істей аламын! Мен $age болдым!";
}
Шартты операцияның қысқаша жазылуының тамаша мысалы. басқажазудың қажеті жоқ.

РНР тіліндегі салыстыру операторлары

Шартты операцияның жұмыс істеу принципі түсінікті. Бірақ, сіз түсінгендей, салыстырудың көптеген жолдары бар. Төмендегі кестені салыстыру операторларымен қарастырайық.

Нәтиже атауының мысалы
$a == $b Тең болады, егер $a $b тең болса
$a === $b Ақиқатпен бірдей, егер $a $b мәніне тең болса және екі айнымалы да бір типте болса
$a != $b Ақиқатқа тең емес, егер $a $b мәніне тең болмаса
$a === $b True бірдей емес, егер $a $b мәніне тең болмаса және екі түрі де бірдей болмаса
$a > $b Егер $a $b мәнінен үлкен болса, "Шын" мәнінен үлкен
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Ақиқат мәнінен үлкен немесе оған тең, егер $a $b мәнінен үлкен немесе оған тең болса
$a<= $b Меньше или равно True, если $a меньше или равно $b
Енді операторларды қарастырайық мысалдармен:

// әдетке қайшы = айнымалыға мән беруді білдіреді және == тең
егер ($a == 5)(
echo "$a - 5"; // "5 тең 5" басып шығарады
) басқа (
echo "$a 5-ке тең емес";
}

Егер ($a != 6)(
echo "$a 6-ға тең емес"; // «5 6-ға тең емес» басып шығарады. Бас тарту жағдайында қажет
) басқа (
echo "$a қалай болғанда да 6-ға тең";
}

// көбейген сайын бәрі түсінікті деп ойлаймын. Сондықтан мысал күрделірек
егер ($a<= 6){
echo "$a 6-дан аз немесе оған тең"; // "5 саны 6-дан аз немесе тең" басып шығарады
) басқа (
echo "$a 6-дан үлкен";
}

РНР логикалық операторлары

Бір шартта бір айнымалыны емес, бірден екі немесе одан да көп мәнді салыстыру қажет болатын кездер болады. Бұл үшін бар логикалық операторлар.

Нәтиже атауының мысалы
$a және $b Логикалық "және" ШЫН, егер $a және $b екеуі де ШЫН болса.
$a немесе $b Логикалық "немесе" ШЫН, егер $a немесе $b болса, РАС.
$a xor $b Эксклюзивті "немесе" АҚИҚА, егер $a немесе $b TRUE болса, бірақ екеуі де емес.
! $a Егер $a TRUE болмаса, ШЫНДЫҚ теріске шығару.
$a && $b Логикалық "және" ШЫН, егер $a және $b екеуі де ШЫН болса.
$a || $b Логикалық "немесе" АҚИҚА, егер $a немесе $b мәні ШЫН болса.
Біз мұны операциялар үшін байқадық ЖәнеЖәне немесеқосымша операторлар бар ма? Бұл күрделі салыстыру операцияларына басымдық беру үшін жасалады. Кестеде логикалық операторлар басымдық ретімен берілген: ең кішіден үлкенге қарай, яғни, мысалы, || немесе қарағанда жоғары басымдыққа ие.

Әрі қарай жүрейік мысалдарға

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

// шарт: 5 6-ға тең болмаса (ШЫН) ЖӘНЕ 6 7-ге тең емес (ШЫН)
егер ($a< 6 && $b != $c){
echo «Шынында да солай!»; // "Шынымен солай!" деп басып шығарады. өйткені ЕКІ шарт та ШЫН
) басқа (
echo «Шарттардың бірі дұрыс емес»;
}

// шарт: 6 6-ға тең болмаса (ЖАЛҒАН) НЕМЕСЕ 6 7-ге тең емес (ШЫН)
егер ($b != 6 || $b != $c)(
echo «Болды!»; // «Міне!» дегенді көрсетеді, себебі шарттардың кем дегенде БІРІ ШЫН
) басқа (
echo «Екі жағдай да жалған»;
}

Үштік оператор

Мен сізге кейінірек үштік код мәселесіне оралуды ұсынамын. Мен оны атап өтуге көмектесе алмадым, өйткені бұл код өлшемін айтарлықтай азайтатын маңызды дизайн. Мен сізге бірден кодты қарауды ұсынамын.

Кодтың мәні:(шарт)? a if true мәні: a if false мәні

Осылайша, if операторын қысқартамыз. Дегенмен, бұл әрекет айнымалыға мәндер тағайындалғанда ғана жарамды. Енді аяқталған мысалды қарастырайық.

// Үштік операторды қолдану мысалы
$settings = (бос($_POST["параметрлер"])) ? "Әдепкі" : $_POST["параметрлер"];

// Жоғарыдағы код if/else арқылы келесі блокқа ұқсас
егер (бос($_POST["параметрлер"])) (
$settings = "Әдепкі"; // Егер ештеңе тасымалданбаса, оны «Әдепкі» ретінде қалдырыңыз
) басқа (
$settings = $_POST["параметрлер"]; // Егер өткізілсе, онда $settings берілген мән тағайындалады.
}
?>
Кодқа түсініктемелерді оқыңыз және бәрі түсінікті болуы керек.

Назарларыңызға рахмет!


PHP стандартты логикалық операторларды AND және && , OR және || қолдайды , ! (жоқ) және XOR . Логикалық операторлар екі операндтың (мән немесе өрнек) нәтижелерін салыстыруға, біреуі немесе екеуі де ақиқат немесе жалған екенін анықтауға және қайтарылған мәнге сәйкес сценарийді орындауды жалғастыруды таңдауға мүмкіндік береді. Салыстыру операторлары сияқты логикалық операторлар оператордың екі жағындағы мәндерге байланысты шын немесе жалған бір логикалық мәнді қайтарады.

Логикалық НЕМЕСЕ (НЕМЕСЕ және ||)

Логикалық НЕМЕСЕ операторы НЕМЕСЕ немесе || деп белгіленеді . Ол екі операндта логикалық НЕМЕСЕ операциясын орындайды. Егер операндтардың біреуі немесе екеуі де ақиқат болса, ол шындықты қайтарады. Екі операнд да жалған болса, ол жалған мәнін қайтарады. Сізде сұрақ туындауы мүмкін: неге олар бір оператордың екі нұсқасын жасады? Логикалық НЕМЕСЕ операторының екі түрлі нұсқаларының мәні олардың әртүрлі басымдықтармен жұмыс істеуінде.

Алдымен || операторының қалай жұмыс істейтінін қарастырайық. . Сонымен, егер оның операндтарының біреуі немесе екеуі де ақиқат болса, ол true мәнін қайтарады. Екі операнд да жалған мәндерді қайтарса, ол false мәнін қайтарады.

НЕМЕСЕ операторы || операторымен бірдей жұмыс істейді. бір ерекшелікпен, егер НЕМЕСЕ операторы тапсырмамен пайдаланылса, ол алдымен сол жақ операндтың мәнін бағалайды және қайтарады, әйтпесе ол || операторымен дәл жұмыс істейді. , яғни. егер оның операндтарының біреуі немесе екеуі ақиқат болса, ол true мәнін қайтарады. Екі операнд жалған мәнін қайтарса, ол false мәнін қайтарады.

Олардың қалай жұмыс істейтінін түсіну үшін келесі мысалды келтірейік:

1 // Алдымен айнымалыға false мәні тағайындалады, содан кейін екінші операнд бағаланады // Приоритет әрекеті: ($var2 = false) немесе true $var2 = false немесе true; echo $var2; // false басып шығарылмайды // ($var3 = 0) немесе 3 $var3 = 0 немесе 3; жаңғырық»
$var3"; // => 0 ?>

Кез келген салыстыру және логикалық операторларды күрделі құрылымдарға біріктіруге болады:

OR және || операторларына қатысты айта кететін тағы бір маңызды мәселе бар. . Логикалық НЕМЕСЕ операторы бағалауды өзінің сол жақ операндынан бастайды; егер ол шын мәнін қайтарса, оң операнд бағаланбайды. Бұл орындалу уақытын үнемдейді, бірақ бағдарламаның дұрыс жұмыс істеуі тәуелді болатын кодтың оң жақтағы операндта орналаспауын қамтамасыз ету керек.

Логикалық ЖӘНЕ (ЖӘНЕ және &&)

Логикалық ЖӘНЕ операторы ЖӘНЕ немесе && деп белгіленеді. Ол екі операндта логикалық ЖӘНЕ операциясын орындайды. Ол шын мәнін қайтарады, егер операндтардың екеуі де шын мәніне бағаланса ғана. Егер бір немесе екеуі де false мәнін қайтарса , оператор жалған мәнін қайтарады . «Логикалық ЖӘНЕ» операторының екі түрлі нұсқасының мағынасы алдыңғы екі оператормен бірдей, атап айтқанда, олар әртүрлі басымдықтармен жұмыс істейді.

Алдымен && операторының қалай жұмыс істейтінін қарастырайық. Сонымен, егер оның екі операнды да ақиқат болса, ол true мәнін қайтарады. Оның кем дегенде біреуі немесе екеуі де false мәнін қайтарса, ол да жалғанды ​​қайтарады.

ЖӘНЕ операторы бір ерекшелікпен && операторымен бірдей жұмыс істейді, егер AND операторы тағайындаумен бірге пайдаланылса, ол алдымен сол жақ операндтың мәнін бағалайды және қайтарады, әйтпесе ол && операторымен бірдей жұмыс істейді. Егер оның операндтарының кем дегенде біреуі жалған мәнін қайтарса, ол да жалғанды ​​қайтарады, ал егер екі операнд да жалған болса, ол жалғанды ​​қайтарады.

Түсіну үшін, енді оның іс жүзінде қалай жұмыс істейтінін қарастырайық:

$bar3"; // => 9 ?>

Эксклюзивті НЕМЕСЕ (XOR)

Эксклюзивті НЕМЕСЕ операторы XOR ретінде белгіленеді. Егер оның операндтарының біреуі ғана ақиқат болса, ол true мәнін қайтарады. Екі операнд да ақиқат болса, оператор жалғанды ​​қайтарады.

XOR операторы ЖӘНЕ және НЕМЕСЕ операторларымен бірдей басымдыққа ие болғандықтан (тағайындау операторынан төмен) және ол тағайындау өрнегінде пайдаланылады, ол алдымен сол операндтың мәнін бағалайды және қайтарады.

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

Логикалық ЕМЕС (!)

Логикалық ЕМЕС операторы терістеу деп те аталады, белгісімен белгіленеді! . Бұл бір операндтың алдында орналасқан біртұтас оператор. Логикалық ЕМЕС операторы оның операндының логикалық мәнін инверсиялау үшін пайдаланылады және әрқашан ақиқат немесе жалған мәнін қайтарады.

a && b сияқты өрнектің мәнін инверсиялау қажет болса, жақшаларды пайдалану қажет: !(a && b) . Сондай-ақ оператордың көмегімен! Кез келген x мәнін оның логикалық эквивалентіне түрлендіруге болады: !!x операторын екі рет пайдалану.