В прогрессе
Урок 11 из 29
В прогрессе

11php

Урок
Материалы

Логические операторы ¶

Логические операторы
Пример Название Результат
$a and $b И true, если и $a, и $b true.
$a or $b Или true, если или $a, или $b true.
$a xor $b Исключающее или true, если $a, или $b true, но не оба.
! $a Отрицание true, если $a не true.
$a && $b И true, если и $a, и $b true.
$a || $b Или true, если или $a, или $b true.

Смысл двух разных вариантов для операторов «and» и «or» в том, что они работают с различными приоритетами (смотрите таблицу Приоритет выполнения операторов).

Пример #1 Объяснение логических операторов

<?php

// ———————
// foo() никогда не будет вызвана, т.к. эти операторы являются шунтирующими (short-circuit)

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// ———————
// «||» имеет больший приоритет, чем «or»

// Результат выражения (false || true) присваивается переменной $e
// Действует как: ($e = (false || true))
$e = false || true;

// Константа false присваивается $f, а затем значение true игнорируется
// Действует как: (($f = false) or true)
$f = false or true;

var_dump($e, $f);

// ———————
// «&&» имеет больший приоритет, чем «and»

// Результат выражения (true && false) присваивается переменной $g
// Действует как: ($g = (true && false))
$g = true && false;

// Константа true присваивается $h, а затем значение false игнорируется
// Действует как: (($h = true) and false)
$h = true and false;

var_dump($g, $h);
?>


Home task

1 Напишите скрипт, который будет показывать кол-во секунд в часе, суток и неделе
$min = 60;
$hour = $min * 60;
var_dump($hour, день, неделя );
2 Дана переменная $x = 60. Используя комбинированные операторы, покажите кол-во секунд в часе, сутках и неделе без использования дополнительных переменных
<?php error_reporting(-1);
$x = 60;
var_dump($x ?? 60 ); час
var_dump($x ?? ?? ); день
var_dump($x ??  ? ); неделя
$min = 60;
$hour = $min * 60;
$day = $hour * 24;
$week = $day * 7;
var_dump($week, $day , $hour );