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;
?>

Вищенаведений приклад виведе:

Більше інформації про посилання та їхнє потенційне використання можна знайти в розділі "Пояснення до посилань" цього посібника.

Example Equivalent Operation $a += $b $a = $a + $b Addition $a -= $b $a = $a - $b Subtraction $a *= $b $a = $a * $b Multiplication $a /= $b $a = $a / $b Division $a %= $b $a = $a % $b Modulus $a **= $b $a = $a ** $b Exponentiation
Example Equivalent Operation $a &= $b $a = $a & $b Bitwise And $a |= $b $a = $a | $b Bitwise Or $a ^= $b $a = $a ^ $b Bitwise Xor $a <<= $b $a = $a << $b Left Shift $a >>= $b $a = $a >> $b Right Shift
Example Equivalent Operation $a .= $b $a = $a . $b String Concatenation $a ??= $b $a = $a ?? $b Null Coalesce

арифметичні оператори порозрядні оператори нульовий оператор об'єднання