PHP 8.4.1 Released!

Основы

Переменные в PHP обозначаются знаком доллара, за которым идёт имя переменной. Имя переменной чувствительно к регистру.

Правильное имя переменной начинается с буквы в диапазонах A-Z или a-z, ASCII-символа в диапазоне со 128-го по 255-й байт или символа подчёркивания. Затем идёт произвольное количество букв, цифр или подчёркиваний. В виде регулярного выражения правило именования переменных выражалось бы вот так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$

Замечание: PHP не поддерживает названия переменных в Юникоде, однако, отдельные кодировки символов наподобие UTF-8 кодируют символы так, что каждый байт многобайтового символа попадает в допустимый диапазон, поэтому такое название переменной становится допустимым.

Замечание: Переменная $this — специальная переменная, которой нельзя присваивать значение. До PHP 7.1.0 было возможно косвенное присваивание (например, через переменные переменных).

Подсказка

Смотрите также «Руководство по именованию».

Пример #1 Правильные и неправильные названия переменных

<?php

$var
= 'Боб';
$Var = 'Джо';
echo
"$var, $Var"; // Инструкция выведет "Боб, Джо"

$4site = 'ещё нет'; // Неверно; имя переменной начинается с цифры
$_4site = 'ещё нет'; // Верно; имя переменной начинается с символа подчёркивания
$täyte = 'mansikka'; // Верно; символ 'ä' — 228-я кодовая точка в кодировке Extended ASCII

?>

PHP принимает последовательность произвольных байтов как названия переменной. Названия переменных, которые не соответствуют правилам именования, доступны только динамически во время выполнения. Раздел «Переменные переменных» рассказывает, как получить доступ к переменным переменных.

Пример #2 Доступ к неизвестным именам переменных

<?php

${'invalid-name'} = 'bar';
$name = 'invalid-name';
echo ${
'invalid-name'}, " ", $$name;

?>

Результат выполнения приведённого примера:

bar bar

По умолчанию переменные присваиваются по значению. Поэтому когда переменной присваивают выражение, значение исходного выражения копируется в целевую переменную. Это означает, например, что после присваивания значения одной переменной другой переменной, изменение одной переменной не повлияет на другую. Дополнительную информацию об этом способе присваивания смотрите в разделе «Выражения».

PHP также предлагает другой способ присваивания значений переменным: присваивание по ссылке. Это означает, что новая переменная просто ссылается (иначе говоря, «становится псевдонимом» или «указывает») на оригинальную переменную. Изменения в новой переменной отражаются на оригинале, и наоборот.

Для присваивания по ссылке к началу имени присваиваемой (исходной) переменной просто добавляют амперсанд &. Например, следующий фрагмент кода дважды выводит «Меня зовут Боб»:

<?php

$foo
= 'Боб'; // Присваивает переменной $foo значение «Боб»
$bar = &$foo; // Ссылка на значение переменной $foo через переменную $bar
$bar = "Меня зовут $bar"; // Изменение значения переменной $bar...
echo $bar;
echo
$foo; // ...меняет и значение переменной $foo

?>

Важно отметить, что по ссылке присваиваются только переменные.

<?php

$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 Значение по умолчанию в неинициализированной переменной

<?php

// Пример переменной, которую не установили и (!) не упомянули в строковом,
// логическом, целочисленном или другом контексте
var_dump($unset_var);

?>

Результат выполнения приведённого примера:

Warning: Undefined variable $unset_var in ...
NULL

PHP разрешает автовивификацию массивов из неопределённых переменных. Автовивификация (букв.: автоматическое оживление) — операция, при которой новый массив создаётся автоматически при добавлении в него значения. Добавление элемента к неопределенной переменной создаст новый массив и не вызовет предупреждения.

Пример #4 Автовивификация массива из неопределённой переменной

<?php

$unset_array
[] = 'value'; // Предупреждение не выдаётся

?>
Внимание

Нельзя рассчитывать, что неинициализированная переменная сохранит значение по умолчанию при включении одного файла в другой, поскольку появляется риск того, что неинициализированная переменная получит значение переменной другого файла, если в файлах встретятся переменные с одинаковым названием.

Переменную уничтожают языковой конструкцией unset().

Подробнее о функциях работы с переменными рассказывает раздел «Функции обработки переменных».

Добавить

Примечания пользователей 1 note

up
13
anisgazig at gmail dot com
3 years ago
clear concept of variable declaration rules and classification

variable declaration rules:

1.start with dollar sign($)
2.first letter of variable name comes from a-zA-z_
3.next letters of variable name comes from a-zA-Z0-9_
4.no space,no syntex

classification of variables:

Variable are mainly Two types
1.Predefined Variable
2.User Define Variable

Predefined Variable
There are 12 predefined variables in php 8
1.$GLOBALS
2.$_SERVER
3.$_REQUEST
4.$_FILES
5.$_ENV
6.$_SESSION
7.$_COOKIE
8.$_GET
9.$_POST
10.$http_response_header
11.$argc
12.$argv

User Define Variable
User Define variable are 3 types
1.variable scope
2.variable variables
3.reference variable

Variable Scope
variable scope are 3 types
1.local scope
2.global scope
3.static variable
To Top