Jump to content

пхп - логически оператори


Препоръчан пост

извинявам се но да попитам още нещо:

 

<?php
$a = 1;
$b = 10;
$c = 6;

if ( $c==11 && $a == 1 || $b == 110 )      

  {
            echo "условието е вярно";
   }
      
else

  {
echo "условието  не е вярно";
      }

?>

 

<?php
$a = 1;
$b = 10;
$c = 6;

if ( $c==11 && $a == 1 || $b == 10 )      

  {
            echo "условието е вярно";
   }
      
else

  {
echo "условието  не е вярно";
      }

?>

 

Защо дават различен резултат?

 

нали използвам оператора ИЛИ ? не е задължително и ДВЕТЕ : $a и $b да са верни ?

Link to comment
Сподели другаде

Ами израза ти в началото си дава false по принцип където е AND (&&), така че определяща е последната част след ИЛИ - то (двете вертикални черти)

 

В първия случай имаш

false AND true OR false, което се свежда до false OR false

а във втория

false AND true OR true, което се свежда до false OR true

Link to comment
Сподели другаде

ок, това го разбрах

 

сега имам друг проблем:

 

<?php

while ($a=!5)

{
$a=rand(1, 110);

echo $a .'<br />';
}

?>

 

защо не работи ?

 

а=!5 се тълкува така: а да бъде равно на НЕ 5, което се свежда до a да бъде равно на false и понеже резултатът от това ПРИСВОЯВАНЕ е false, никога няма да влезеш в този цикъл

 

Предполагам, че имаш предвид за условие следното:

a!=5 което вече си е ПРОВЕРКА за условие дали а не е равно на 5

 

разменил си местата на удивителната и знака за равенство.

Link to comment
Сподели другаде

Аз не разбирам от PHP ама то тук се свежда до просто програмирнае. И аз проверих, че имаш грешка в while (условието).

Ако го поправиш ще генерираш постоянно рандом числа на нов ред докато не стигне 5 и тогава ще спре. Но ще спре, когато стигне 5 - също така и ще го покаже заради това, че на 1вия ред в цикъла ти е $a=rand(1, 110); и така се генерира 5, отпечатва се и тогава се връща пак на проверката, прави я и спира. Надявам се това да е и целта ти ;)

Предполагам това ти е ясно, няма нужда да се опитвам да обяснявам ;P (все пак може да ползваш цикъла for)

Edit: Ако все пак не искаш да ти изписва 5, след като стигне до него:

<?php
while ($a!=5)
{
$a=rand(1, 110);
if ($a == 5) echo "";
else
echo $a .'<br />';
}
?>

Въх, това Php-то не е толкова сложно :haha:

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...