Переменные в php
Основы
Имя переменной должно начинаться с буквы, цифр и символов.
Имя переменной можно проверить с помощью регулярного выражения: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Возможно присвоение переменной по ссылке, когда переменная ссылается на оригинальную переменную, изменение такой переменной отображается в оригинале или наоборот.
Неинициализированные переменные принимают значение по умолчанию исходя из первого их использования ( "", false, 0 ) или null если переменная нигде не использовалась
Можно проверить, не существует ли переменная, с помощью isset()
Переменные могут быть уничтожены с помощью конструкции unset()
Переменная может быть проверена на наличие пустоты с помощью функции empty()
#Присвоение по ссылке
$var1 = 'test';
$var2 = &$var1;
global и $GLOBALS
global $a, $b;
После определения $a и $b внутри функции как global все ссылки на любую из этих переменных будут указывать на их глобальную версию.
$GLOBALS - это ассоциативный массив, ключом которого является имя, а значением - содержимое глобальной переменной. Обратите внимание, что $GLOBALS существует в любой области видимости, это объясняется тем, что $GLOBALS является суперглобальным.
$a = 1;
$b = 2;
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
static
Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда выполнение программы выходит из этой области видимости.
Чтобы написать полезную функцию подсчёта, которая не будет терять текущего значения счётчика, переменная $a объявляется как static
function test()
{
static $a = 0;
echo $a;
$a++;
}
Начиная с PHP 8.1.0, когда метод, использующий статические переменные, наследуется (но не переопределяется), унаследованный метод теперь будет использовать статические переменные совместно с родительским методом. Это означает, что статические переменные в методах теперь ведут себя так же, как статические свойства.
Переменные переменных
В следующем примере значение переменной будет рассматриваться как имя переменной
Подробнее в официальной документации
$a = 'hello';
$$a = 'world';
$$$a = '!';
echo "$a {$$a} {$$$a}";
echo $hello; //world
echo $world; //!
Определение типов переменных
Функции для определения типов переменных
gettype(), is_array(), is_float(), is_int(), is_object() и is_string()
Константы
Как и superglobals константы доступны из любой области видимости
#Определение константы
define( 'MIN_VALUE', '0.0' );