Еще в РНР версии 4 появился новый оператор сравнения — тройной знак равенства ===, или оператор проверки на эквивалентность.
$int = 10;
$string = "10";
if ($int == $string) echo "переменные равны";
И это несмотря на то, что переменная $int представляет собой число, а $ string — строку.
Проблему решает оператор эквивалентности === (тройное равенство). Он не только сравнивает два выражения, но также их типы.
<?php ## Операторы равенства и эквивалентности.
$уер = array("реальность", true);
$nein = array("реальность", "иллюзия");
if ($yep == $nein) echo "Два массива равны";
if ($yep === $nein) echo "Два массива эквивалентны";
?>
Если запустить представленный код, то выведется первое сообщение, но не второе: эквивалентности нет. Для объектов сравнение на эквивалентность также производится в "строгом" режиме .
Эти операции предназначены исключительно для работы с логическими выражениями и также возвращают false или true:
!a — истина, если а ложно, и наоборот;
а && b — истина, если истинны и а и b;
а || b — истина, если истинны или а, или b, или оба операнда.
Обратите внимание, что, например, | и || — два совершенно разных оператора, первый из которых может потенциально возвращать любое число, а второй — только false И true.
1. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров.
2. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).
3. С начала суток прошло N секунд (N — целое). Найти:
a) количество полных минут, прошедших с начала суток;
b) количество целых часов, прошедших с начала суток;
c) количество секунд, прошедших с начала последней минуты;
d) количество секунд, прошедших с начала последнего часа;
e) количество полных минут, прошедших с начала последнего часа.
if (логическое_выражение)
инструкция_1;
инструкция_ 2;
Действие инструкции следующее: если логическое_выражение истинно, то выполняется инструкция_1, а иначе — инструкция_2. Как и в любом другом языке, конструкция else может опускаться, в этом случае при получении ложного значения просто ничего не делается.
Пример:
if ($salary>=100 && $salary<=5000) echo "Вам полагается премия";
else echo "Не в этот раз.";
Если инструкция_1 или инструкция_2 должны состоять из нескольких команд, то они заключаются в фигурные скобки. Например:
if ($a > $b) { print "а больше b"; $c-=$b; }
elseif ($a == $b) { print "а равно b"; $c = $a; }
else { print "а меньше b"; $c = $a; }
echo "<br>Минимальное из чисел: $с";
Это не опечатка: elseif пишется слитно, вместо else if. Так тоже можно писать. Конструкция if-eise имеет еще один альтернативный синтаксис:
if(логическое_выражение) :
команды;
elseif (другое_логическое_выражение) :
другие_команды;
else:
иначе_команды;
Обратите внимание на расположение двоеточия (:)! Если его пропустить, будет сгенерировано сообщение об ошибке. И еще: блоки elseif и else можно опускать.
Эта конструкция также унаследована непосредственно от С. Ее предназначение — цикличное выполнение команд в теле цикла, включающее предварительную проверку, нужно ли это делать (истинно ли логическое выражение в заголовке). Если не нужно (выражение ложно), то конструкция заканчивает свою работу, иначе выполняет очередную итерацию и начинает все сначала. Выглядит цикл так:
while(логическое_выражение)
инструкция;
где, логическое_вьражение — логическое выражение, а инструкция — простая или составная инструкция тела цикла. Если выражение с самого начала ложно, то цикл не выполнится ни разу.
<?php ## Вывод всех степеней двойки до 2^31 включительно.
$i=1; $р = 1;
while ($i < 32)
{
echo $p." ";
$р = $р * 2;
$i++;
}
?>
Аналогично инструкции if, цикл while имеет альтернативный синтаксис, что упрощает его применение совместно с HTML-кодом: