Як присвоїти значення змінної в PHP?
Базовий оператор надання позначається символом «=». Здається, що це оператор рівно. Це негаразд. Оператор присвоєння означає, що лівий операнд набуває значення правого виразу (тобто лівому операнду «присвоєно значення»).
Результатом виконання оператора присвоювання буде саме значення. Тобто, результат виконання виразу $a = 3 буде дорівнює 3. Це дозволяє робити трюки на кшталт:
$a = ($ b = 4) + 5; // Значення змінної $a дорівнює 9, а змінної $b надано значення 4.
На додаток до базового оператора присвоєння існують «комбіновані оператори» для всіх бінарних арифметичних операцій, операцій об'єднання масивів та рядкових операцій, які дають присвоїти значення у виразі, а потім встановити його значення результат цього виразу. Наприклад:
$a = 3;
$a += 5; // встановлює для змінної $a значення 8, як було написано: $a = $a + 5;
$b = "Привіт";
$b .= "-привіт!" ; // встановлює змінної $b значення "Привіт-привіт!", як і $b = $b. "-Привіт!";
Зверніть увагу, що присвоєння копіює оригінальну змінну в нову (присвоєння за значенням), тому наступні зміни однієї змінних ніяк не позначаться на іншій. Це також може бути доречним при копіюванні чогось подібного до великого масиву в довгому циклі.
Виняток із звичайного для PHP способу присвоювання за значенням - об'єкти (object), які присвоюються за посиланням. Примусово скопіювати об'єкти за значенням можна за допомогою ключового слова clone.
Привласнення за посиланням
Присвоєння посилання також підтримується, для цього можна використовувати синтаксис $var = &$othervar; . Привласнення за посиланням означає, що обидві змінні вказують на ті самі дані і нічого нікуди не копіюється.
Приклад #1 Assigning by reference
$a = 3;
$b = &$a; // $b - це посилання на змінну $a
print "$a\n"; // друкує 3
print "$b\n"; // друкує 3
$a = 4; // міняємо змінну $a
print "$a\n"; // друкує 4
print "$b\n"; // також друкує 4, оскільки змінна $b це посилання на змінну $a,
// а значення змінної $a встигло змінитися
Оператор new автоматично повертає посилання, тому надання результату операції new за посиланням викликає помилку.
Результат виконання наведеного прикладу:
Parse error: syntax error, unexpected 'new' (T_NEW) in …
Детально про посилання розказано у розділі «Пояснення посилань».
Оператори арифметичного присвоєння
| приклад |
Еквівалент |
Операція |
| $a += $b |
$a = $a + $b |
Додавання |
| $a -= $b |
$a = $a - $b |
Віднімання |
| $a *= $b |
$a = $a * $b |
Розмноження |
| $a /= $b |
$a = $a / $b |
Поділ |
| $a %= $b |
$a = $a % $b |
Модуль |
| $a **= $b |
$a = $a ** $b |
Зведення у ступінь |
Оператори побитового присвоєння
| приклад |
Еквівалент |
Операція |
| $a &= $b |
$a = $a & $b |
Побітове І |
| $a |= $b |
$a = $a | $b |
Побітове АБО |
| $a ^= $b |
$a = $a ^ $b |
Побітове що виключає АБО (Xor) |
| $a | $a = $a | Побітове зрушення вліво |
| $a >>= $b |
$a = $a >> $b |
Побітове зрушення вправо |
Інші оператори присвоєння
| приклад |
Еквівалент |
Операція |
| $a .= $b |
$a = $a . $b |
Конкатенація рядків |
| $a ??= $b |
$a = $a ?? $b |
Об'єднання з Null |
Як присвоїти значення змінної в PHP?
Змінні PHP позначаються знаком долара, за яким йде ім'я змінної.Ім'я змінної чутливе до регістру.
Правильне ім'я змінної починається з літери в діапазонах A-Z або a-z, ASCII-символу в діапазоні з 128 по 255 байт або символу підкреслення. Потім йде довільна кількість букв, цифр чи підкреслень. У вигляді регулярного вираження правило іменування змінних виражалося б ось так: ^[a-zA-Z_x80-xff]
Зауваження: PHP не підтримує назви змінних в Юнікоді, однак окремі кодування символів на кшталт UTF-8 кодують символи так, що кожен байт багатобайтового символу потрапляє в допустимий діапазон, тому така назва змінної стає допустимою.
Зауваження: Змінна $this — спеціальна змінна, якій не можна надавати значення. До PHP 7.1.0 було можливе непряме присвоєння (наприклад, через змінні змінних).
Приклад #1 Правильні та неправильні назви змінних
$var = 'Боб';
$Var = 'Джо';
echo "$var, $Var"; // Інструкція виведе "Боб, Джо"
$ 4site = 'ще ні'; // Неправильно; ім'я змінної починається з цифри
$_4site = 'ще ні'; // Правильно; Ім'я змінної починається з символу підкреслення
$täyte = 'mansikka'; // Правильно; символ 'ä' — 228 кодова точка в кодуванні Extended ASCII
PHP приймає послідовність довільних байтів як назви змінної. Назви змінних, які не відповідають правилам іменування, доступні лише динамічно під час виконання. Розділ «Змінні змінні» розповідає, як отримати доступ до змінних змінних.
Приклад #2 Доступ до невідомих імен змінних
Результат виконання наведеного прикладу:
За замовчуванням змінні надаються за значенням. Тому коли змінної надають вираз, значення вихідного виразу копіюється цільову змінну.Це означає, наприклад, що після надання значення однієї змінної інший змінної, зміна однієї змінної не вплине на іншу. Додаткову інформацію про цей спосіб надання дивіться у розділі «Вирази».
PHP також пропонує інший спосіб надання значень змінним: привласнення за посиланням. Це означає, що нова змінна просто посилається (інакше кажучи, стає псевдонімом або вказує) на оригінальну змінну. Зміни у новій змінній відбиваються на оригіналі, і навпаки.
Для присвоєння посилання на початок імені присвоюється (вихідної) змінної просто додають амперсанд &. Наприклад, наступний фрагмент коду двічі виводить «Мене звуть Боб»:
$foo = 'Боб'; // Надає змінної $foo значення «Боб»
$bar = &$foo; // Посилання на значення змінної $foo через змінну $bar
$bar = "Мене звуть $bar"; // Зміна значення змінної $bar.
echo $bar;
echo $foo; //. змінює значення змінної $foo
Важливо, що за посиланням присвоюються лише змінні.
$ foo = 25;
$bar = &$foo; // Це правильне присвоєння
$bar = & (24 * 7); // Неправильно; посилання на неіменований вираз
function test ()
return 25;
>
$bar = & test(); // Не так, тому що функція test() не повертає змінну за посиланням
PHP не вимагає оголошувати змінні, хоч рекомендує. Доступ до невизначеної змінної до PHP 8.0.0 видавав повідомлення E_NOTICE , а в нових версіях мови видає попередження E_WARNING . Невизначена змінна за умовчанням містить значення null . Мовна конструкція isset() допомагає визначити, чи ініціалізували змінну; конструкція вважає змінну ініціалізованою, якщо значення змінної не дорівнює null .
Приклад #3 Значення за замовчуванням у неініціалізованій змінній
// Приклад змінної, яку не встановили та (!) не згадали у рядковому,
// логічному, цілісному чи іншому контексті
var_dump ($ unset_var);
Результат виконання наведеного прикладу:
Warning: Undefined variable $unset_var in . NULL
PHP дозволяє автовівіфікацію масивів із невизначених змінних. Автовівіфікація (букв.: автоматичне пожвавлення) - операція, при якій новий масив створюється автоматично при додаванні до нього значення. Додавання елемента до невизначеної змінної створить новий масив і не викличе попередження.
Приклад #4 Автовівіфікація масиву з невизначеної змінної
$unset_array [] = 'value'; // Попередження не видається
Не можна розраховувати, що неініціалізована змінна збереже значення за замовчуванням при включенні одного файлу в інший, оскільки виникає ризик того, що неініціалізована змінна отримає значення змінної іншого файлу, якщо у файлах зустрінуться змінні з однаковою назвою.
Змінну знищують мовною конструкцією unset().
Докладніше про функції роботи зі змінними розповідає розділ «Функції обробки змінних».