Ссылки
Составной оператор присваивания
Наряду с обычным оператором присваивания, в 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.