Операторы сравнения и логические операторы

Ссылки

Составной оператор присваивания

Наряду с обычным оператором присваивания, в PHP можно использовать составной оператор присваивания:

знак-операции =

где знак операции – это любая арифметическая или битовая операция, например, оператор:

$x +=3;

эквивалентен оператору

$x = $x + 3;.

Хотя в РНР нет понятия адресной переменной, т.е. переменной, содержащей значение адреса другой переменной в оперативной памяти, все же можно создавать ссылки на другие переменные. Существует две разновидности ссылок: жесткие и символические (первые часто называют просто ссылками).

Жесткая ссылка представляет собой просто переменную, которая является синонимом другой переменной. Многоуровневая ссылка, т.е. ссылка на ссылку на переменную, не под­держиваются. Для создания жесткой ссылки используется оператор "&", причем ссылаться можно не только на переменные, но и на элементы массива. Если элемент массива, для которого планируется создать символиче­скую ссылку, не существует, то в массиве создается новый элемент с указанным ключом и значением – пустой строкой.

Жесткие ссылки, как будет показано далее, применяются при передаче параметров функции и возврате значения из нее.

Пример 4.6.31. Использование жесткой ссылки:

1. Ссылка на переменную:

$а=10;

$b = &$а;// Теперь $b всегда имеет то же значение, что и $а

$b=0; // $а также получает значение 0

2. Ссылка на элемент массива:

$A=array('a' => 'aaa', 'b' => 'bbb');

$b=&$А['b'];

Теперь $b будет иметь то же значение, что и элемент с индексом 'с' массива $A.

Символическая ссылка – это строковая переменная, хранящая имя другой переменной. В описании PHP переменные ссылки называются переменными переменных (variable variables). Чтобы получить значение переменной, на ко­торую ссылается символическая ссылка, используется оператор разыменования "$" перед именем ссылки,

Пример 4.6.32. Использование символической ссылки:

$а=10;

$p="а"; // Присваивание $p имени другой переменной

$c = $$p; // присваивание переменной $c значения

// переменной, на которую

// ссылается $p, т.е. $а

$$p=100; // Присваивание $а значения 100

Операции сравнения, независимо от типов своих аргументов, всегда возвращают булевское значение false или true. В PHP определены следующие операторы сравнения: "==" (проверка на равенство), "!=" (проверка на неравенство), "<" (проверка на меньше), ">" (проверка на больше), "<=" (проверка на меньше или равно) и ">=" (проверка на больше или равно).

Два оператора сравнения "===" и "!==" называются операторами проверки на эквивалентность. Оператор "===" возвращает значения true, когда равны не только значения сравниваемых переменных или выражений, но и их типы (соответственно оператор "!==" в этом случае возвращает значение false).

Необходимость этих операторов связана с особенностями преобразования типов операндов в PHP при сравнении: если один из операндов логического оператора может трактоваться как чис­ло, то оба операнда трактуются как числа (при этом пустая строка превра­щается в 0). Поэтому, если заданы следующие операторы

$а=0;

$b="";

то при обычном сравнении (с помощью оператора "=="), будет получено true, хотя на самом деле значения переменных $a и $b не равны друг другу. В данном случае для получения правильного результата необходимо использовать операторы проверки на эквивалентность.

С помощью операторов эквивалентности можно сравнивать также массивы. Поскольку при обычном сравнении массивы в PHP преобразуются в строки "Array", то при сравнении двух массивов всегда будет получаться значение true (при сравнении с использованием оператором эквивалентности это произойдет только в том случае, когда равны значения всех элементов массивов).

К операторам сравнения относится и условный оператор

выражение-1? выражение-2: выражение-3

Этот оператор сначала проверяет выражение-1 и, если результат проверки равен true, в качестве результата выполнения оператора возвращается выражение-2, иначе – выражение-3.

Пример 4.6.33. Использование условного оператора:

В результате выполнения оператора

$max = $a>$b?$a:$b;

переменная $max получит значение максимума из значений переменных $a и $b.

Логические операторы предназначены для работы с логическими вы­ражениями и также возвращают false или true. В PHP определены следующие логические операторы:

· "!" (логическое НЕ) если значение операнда равно true, то результат операции равен false, в противном случае результат операции равен true;

· "and" или "&&" (логическое И) – результат операции равен true только в том случае, если оба операнда равны true;

· "or" или "||" (логическое ИЛИ) – результат операции равен true, если хотя бы один из операндов равен true;

· "xor" (логическое исключающее ИЛИ) – результат операции равен true только в том случае, если один из операндов равен true, а другой – false.

Пример 4.6.34. Использование операторов сравнение и логических операторов:

1. Оператор "!":

$x = 5;

Выражение

!($x>0)

будет иметь значение false.

2. Оператор "&&":

$x = 5;

$y = 2;

Выражение

$x>0 && $y>0

будет иметь значение true, а выражение

$x>4 && $y>4

будет иметь значение false.

3. Оператор "||":

$x = 5;

$y = -2;

Выражение

$x>0 || $y>0

будет иметь значение true, а выражение

$x>5 && $y>5

будет иметь значение false.

4. Оператор "xor":

$x = 5;

$y = 2;

Выражение

$x>4 xor $y>4

будет иметь значение true, а выражение

$x>0 && $y>0

будет иметь значение false.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: