Assignment Operators
Оновлено: 09.05.2023
Базовим оператором присвоювання є "=". Ви можете подумати, що це означає "дорівнює". Але це не так. Насправді це означає, що лівий операнд отримує значення виразу праворуч (тобто "дорівнює").
Значенням виразу присвоювання є значення, яке присвоюється. Тобто, значенням "$a = 3" є 3. Це дозволяє робити деякі хитрі речі:
<?php
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.
?>
На додаток до базового оператора присвоювання, існують "комбіновані оператори" для всіх двійкових арифметичних операцій, об'єднання масивів і рядкових операторів, які дозволяють використовувати значення у виразі, а потім встановлювати його значення як результат цього виразу. Наприклад:
<?php
$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";
?>
Зверніть увагу, що присвоювання копіює вихідну змінну до нової (присвоювання за значенням), тому зміни в одній змінній не вплинуть на іншу. Це також може мати значення, якщо вам потрібно скопіювати щось на кшталт великого масиву всередині замкнутого циклу.
Виняток зі звичайної поведінки присвоювання за значенням у PHP відбувається з об'єктами, які присвоюються за посиланням. Об'єкти можуть бути явно скопійовані за допомогою ключового слова clone.
Також підтримується присвоювання за посиланням, використовуючи синтаксис "$var = &$othervar;". Присвоєння за посиланням означає, що обидві змінні вказують на ті самі дані, і нічого нікуди не копіюється.
Приклад #1 Присвоєння за посиланням
<?php
$a = 3;
$b = &$a; // $b is a reference to $a
print "$a\n"; // prints 3
print "$b\n"; // prints 3
$a = 4; // change $a
print "$a\n"; // prints 4
print "$b\n"; // prints 4 as well, since $b is a reference to $a, which has
// been changed
?>
Оператор new повертає посилання автоматично, тому присвоювання результату new за посиланням є помилкою.
<?php
class C {}
$o = &new C;
?>
Вищенаведений приклад виведе:
Більше інформації про посилання та їхнє потенційне використання можна знайти в розділі "Пояснення до посилань" цього посібника.
арифметичні оператори порозрядні оператори нульовий оператор об'єднання