Operator logiczny ||


(WODZU) #1

Witam

Jestem początkujący w PHP. Czy ktoś może mi wyjaśnić dlaczego PHP w poniższym kodzie nie wykonuje kodu zawartego w instrukcji warunkowej if?

<?php

$a = 2;

$b = NULL;

$c = 7;

if (($a || $b || $c) == NULL)

{

echo 'ktoras z wartosci jest NULL';

}

?>

(Kutar 0) #2
if ($a == NULL || $b == NULL || $c == NULL)

(WODZU) #3

Dzięki jak nie wiem co :slight_smile:


(Kubarek) #4
if (($a || $b || $c) == NULL)

najpierw sprawdza, czy jedna ze zmiennych $a, $b, $c istnieje/jest typu boolean i wynosi true/jest typu string i zawiera w sobie jakiś tekst/jest typu integer i zawiera liczbę > 0/etc.

oczywiście całe wyrażenie jest prawdą, bo zarówno $a jest >0, jak i $c jest > 0

a prawda z reguły raczej nie równa się NULL :wink:


(Airborn) #5

a nie != 0?


(Droop) #6
($a || $b || $c)

|| to jest logiczne or (alternatywa) u ciebie nie chodzi tu o or tylko o and (koniunkcja) czyli && czyli przyklad

<?php

$a = 2;

$b = NULL;

$c = 7;

if (($a && $b && $c) == NULL)

{

echo 'ktoras z wartosci jest NULL';

}

?>

jesli nie znasz sie na logice to link z googli :slight_smile:Logika


(Kubarek) #7

tak, pomylilem się, mea culpa :wink: