Переменные в PHP
Переменная — это временное хранилище, контейнер, в котором можно хранить какое-либо значение.
Например, если у нас есть HTML страница, на которой необходимо время от времени менять определённое значение, мы можем для удобства вынести это значение в переменную:
Для связи с нами используйте следующий адрес:
При запуске этого кода в конец тега
будет подставлено содержимое переменной $mail .
Создание переменной
Положить значение в переменную можно так:
В коде выше мы создали переменную $name и положили в неё значение Иван , затем создали переменную $age и присвоили ей значение 20 .
Название «переменная» означает, что её значение может меняться во время выполнения скрипта:
В некоторых языках переменную нужно сначала «объявить», а затем уже использовать. В PHP объявления нет — переменная создаётся в тот момент, когда вы кладёте в неё значение.
Тем не менее, веб-разработчики часто говорят «объявить переменную» вместо «создать переменную».
Также вместо «положить в переменную значение» часто говорят «присвоить значение».
Причина — символ = , который называется «оператором присваивания». Отсюда и термин «присвоить».
Правила именования переменных
- Название переменной начинается с символа $ .
- Вторым символом может быть буква или символ подчёркивания _
- Дальше могут идти буквы, символы подчёркивания _ и цифры.
Названия переменных регистрозависимы. $name и $Name — это разные переменные.
Вывод переменной
Вывести переменную можно с помощью команды echo :
При этом команда echo позволяет вывести на экран сразу несколько значений:
В примере выше мы передали в echo 2 значения, разделив их запятой.
Так мы можем передать сколько угодно значений:
Проверка значения переменной
Команда echo не всегда удобна для проверки значения переменной.
К примеру, при попытке вывода пустой строки на экран не выведется абсолютно ничего. И непонятно, действительно ли она выводится или нет (например из-за ошибки в коде).
Поэтому для проверки содержимого переменной лучше использовать функцию var_dump() :
Как видно из примера выше, функция var_dump() выводит содержимое переменной, её длину и тип.
Типы данных мы подробно рассмотрим в отдельном уроке.
Удаление переменной
Удалить существующую переменную можно с помощью функции unset() :
А теперь пришло время немного попрактиковаться.
Задача №1
Запомните, практически любая задача на PHP может иметь несколько решений. Поэтому если ваши решения будут отличаться от написанных на этом сайте — это совсем не значит, что вы что-то сделали неправильно.
1. Создайте переменные с названиями title и content . Присвойте им какие-нибудь значения.
2. Выведите значение переменной title внутри тега h1, а значение переменной content внутри тега div.
Хочу ещё раз обратить ваше внимание, что это решение не является единственно верным. К примеру, следующий код приведёт к такому же результату:
Задача №2
1. Создайте переменную title и присвойте ей какое-нибудь значение.
2. Выведите значение переменной на экран внутри тега h1.
3. Измените значение переменной на какое-нибудь другое.
4. Снова выведите переменную на экран, теперь уже внутри тега div.
5. Удалите переменную title.
', $title, ''; $title = 'Значение 2'; echo '', $title, ''; unset($title);
Обозначение переменной в php
Переменные в PHP представлены знаком доллара с последующим именем переменной. Имя переменной чувствительно к регистру.
Имена переменных соответствуют тем же правилам, что и остальные наименования в PHP. Правильное имя переменной должно начинаться с буквы или символа подчёркивания и состоять из букв, цифр и символов подчёркивания в любом количестве. Это можно отобразить регулярным выражением: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Замечание: Под буквами здесь подразумеваются символы a-z, A-Z и байты от 128 до 255 ( 0x80-0xff ).
Замечание: $this — это специальная переменная, которой нельзя ничего присваивать. До PHP 7.1.0 было возможно косвенное присвоение (например, с использованием переменных переменных).
Для информации о функциях работы с переменными обращайтесь к разделу функций работы с переменными.
$var = ‘Боб’ ;
$Var = ‘Джо’ ;
echo » $var , $Var » ; // выведет «Боб, Джо»
?php
$ 4site = ‘ещё нет’ ; // неверно; начинается с цифры
$_4site = ‘ещё нет’ ; // верно; начинается с символа подчёркивания
$täyte = ‘mansikka’ ; // верно; ‘ä’ это (Расширенный) ASCII 228.
?>
По умолчанию переменные всегда присваиваются по значению. То есть, когда вы присваиваете выражение переменной, все значение оригинального выражения копируется в эту переменную. Это означает, к примеру, что после того как одной переменной присвоено значение другой, изменение одной из них не влияет на другую. Дополнительную информацию об этом способе присвоения смотрите в разделе Выражения.
PHP также предлагает иной способ присвоения значений переменным: присвоение по ссылке. Это означает, что новая переменная просто ссылается (иначе говоря, «становится псевдонимом» или «указывает») на оригинальную переменную. Изменения в новой переменной отражаются на оригинале, и наоборот.
Для присвоения по ссылке, просто добавьте амперсанд (&) к началу имени присваиваемой (исходной) переменной. Например, следующий фрагмент кода дважды выводит ‘ Меня зовут Боб ‘:
$foo = ‘Боб’ ; // Присваивает $foo значение ‘Боб’
$bar = & $foo ; // Ссылка на $foo через $bar.
$bar = «Меня зовут $bar » ; // Изменение $bar.
echo $bar ;
echo $foo ; // меняет и $foo.
?>?php
Важно отметить, что по ссылке могут быть присвоены только именованные переменные.
$foo = 25 ;
$bar = & $foo ; // Это верное присвоение.
$bar = &( 24 * 7 ); // Неверно; ссылка на неименованное выражение.
?php
Хорошей практикой считается инициализировать переменные, хотя в PHP это и не является обязательным требованием. Неинициализированные переменные принимают значение по умолчанию в зависимости от их типа, который определяется из контекста их первого использования: булевы принимают значение false , целые числа и числа с плавающей точкой — ноль, строки (например, при использовании в echo ) — пустую строку, а массивы становятся пустыми массивами.
Пример #1 Значения по умолчанию в неинициализированных переменных
// Неустановленная И не имеющая ссылок (то есть без контекста использования) переменная; выведет NULL
var_dump ( $unset_var );
?php
// Булевое применение; выведет ‘false’ (Подробнее по этому синтаксису смотрите раздел о тернарном операторе)
echo $unset_bool ? «true\n» : «false\n» ;
// Строковое использование; выведет ‘string(3) «abc»‘
$unset_str .= ‘abc’ ;
var_dump ( $unset_str );
// Целочисленное использование; выведет ‘int(25)’
$unset_int += 25 ; // 0 + 25 => 25
var_dump ( $unset_int );
// Использование в качестве числа с плавающей точкой (float); выведет ‘float(1.25)’
$unset_float += 1.25 ;
var_dump ( $unset_float );
// Использование в качестве массива; выведет array(1) < [3]=>string(3) «def» >
$unset_arr [ 3 ] = «def» ; // array() + array(3 => «def») => array(3 => «def»)
var_dump ( $unset_arr );
// Использование в качестве объекта; создаёт новый объект stdClass (смотрите http://www.php.net/manual/ru/reserved.classes.php)
// Выведет: object(stdClass)#1 (1) < ["foo"]=>string(3) «bar» >
$unset_obj -> foo = ‘bar’ ;
var_dump ( $unset_obj );
?>
Полагаться на значения по умолчанию неинициализированных переменных довольно проблематично при включении файла в другой файл, использующий переменную с таким же именем. В случае работы с неинициализированной переменной вызывается ошибка уровня E_WARNING (до PHP 8.0.0 выбрасывалась ошибка уровня E_NOTICE ), за исключением случая добавления элементов в неинициализированный массив. Для обнаружения инициализации переменной может быть использована языковая конструкция isset() .
User Contributed Notes 5 notes
This page should include a note on variable lifecycle:
Before a variable is used, it has no existence. It is unset. It is possible to check if a variable doesn’t exist by using isset(). This returns true provided the variable exists and isn’t set to null. With the exception of null, the value a variable holds plays no part in determining whether a variable is set.
Setting an existing variable to null is a way of unsetting a variable. Another way is variables may be destroyed by using the unset() construct.
print isset( $a ); // $a is not set. Prints false. (Or more accurately prints ».)
$b = 0 ; // isset($b) returns true (or more accurately ‘1’)
$c = array(); // isset($c) returns true
$b = null ; // Now isset($b) returns false;
unset( $c ); // Now isset($c) returns false;
?>
is_null() is an equivalent test to checking that isset() is false.
The first time that a variable is used in a scope, it’s automatically created. After this isset is true. At the point at which it is created it also receives a type according to the context.
$a_bool = true ; // a boolean
$a_str = ‘foo’ ; // a string
?>
If it is used without having been given a value then it is uninitalized and it receives the default value for the type. The default values are the _empty_ values. E.g Booleans default to FALSE, integers and floats default to zero, strings to the empty string », arrays to the empty array.
A variable can be tested for emptiness using empty();
$a = 0 ; //This isset, but is empty
?>
Unset variables are also empty.
empty( $vessel ); // returns true. Also $vessel is unset.
?>
Everything above applies to array elements too.
$item = array();
//Now isset($item) returns true. But isset($item[‘unicorn’]) is false.
//empty($item) is true, and so is empty($item[‘unicorn’]
$item [ ‘unicorn’ ] = » ;
//Now isset($item[‘unicorn’]) is true. And empty($item) is false.
//But empty($item[‘unicorn’]) is still true;
$item [ ‘unicorn’ ] = ‘Pink unicorn’ ;
//isset($item[‘unicorn’]) is still true. And empty($item) is still false.
//But now empty($item[‘unicorn’]) is false;
?>
For arrays, this is important because accessing a non-existent array item can trigger errors; you may want to test arrays and array items for existence with isset before using them.
Обозначение переменной в php
Переменные хранят отдельные значения, которые можно использовать в выражениях PHP. Для определения переменных применяется знак доллара $ . Например:
Здесь определена переменная $num . Поскольку определение переменной — это отдельная инструкция, она завершается точкой с запятой.
Как правило, названия переменный начинаются с маленькой буквы или символа подчеркивания. Стоит учитывать, что PHP является регистрозависимым языком, а значит, переменные $num и $Num будут представлять две разные переменные.
Также при наименовании переменных нам надо учитывать следующие правила:
- Имена переменных должны начинаться с алфавитного символа или с подчеркивания
- Имена переменных могут содержать только символы: a–z, A–Z, 0–9, и знак подчеркивания
- Имена переменных не должны включать в себя пробелы
С помощью операции присвоения ( = ) переменной присваивается определенное значение:
Здесь определена переменная $num , которая хранит число 10.
После определения переменной и присвоения ей значения мы можем использовать ее в выражениях PHP. Например, вывести ее значение на веб-страницу:
С помощью функции echo значение переменной $num выводится на веб-страницу. И при обращении к скрипту мы увидим значение переменной $num :
Отличительной особенностью переменных является то, что мы можем изменять их значение:
Также можно присваивать значение другой переменной:
Если переменная объявлена, но ей изначально не присвоено никакого значения (иначе говоря она не инициализирована), то нам будет проблематично ее использовать. Например:
При попытке вывести значение переменной мы получим диагностическое сообщение о том, что переменная не определена:
Warning: Undefined variable $num in C:\localhost\hello.php on line 13 22
Поэтому перед использованием переменной ей следует присвоить начальное значение.
Вывод значения переменной
В предыдущих примерах для вывода значения переменной применялась команда echo , после которой указывалось выводимое значение. Однако есть и другой способ вывести значение переменной. Например, мы хотим одновременно вывести значения двух переменных:
Здесь функции echo передается строка. Чтобы встроить в строку значение переменной, в этой строке указываем имя переменной вместе со знаком $. И кода в строке PHP встретит выражение $num_1 , он заменит это выражение значением переменной $num_1. То же самое касается и переменной $num_2 . В итоге при выполнении этого скрипта браузер отобразит значения обеих переменных: