Переменные в PHP
Как и во всех языках программирования, в PHP есть переменные. В этой статье мы рассмотрим какие бывают переменные, приведем примеры использования переменных в PHP.
Все переменные в PHP начинаются со знака доллар «$». Далее после этого знака может находиться любая последовательность состоящая из буквенно-цифровых символов (включая знак подчеркивания), но первый символ не может быть цифрой.
Примеры корректных переменных в PHP: $per, $p1e2r3e, $user_10, $_user_10, $prosto_dlinnaya_peremennaya и т.д.
Стоит отметить, что PHP чувствителен к регистру, а значит переменные $pEr, $per, $PER — будут разные. Например:
//можно было написать и так: echo $pEr.", ".$per.", ".$PER; //точка "." является в роли "плюса" ?>
На экране будет выведено: 1, 2, 3.
В PHP не надо указывать явно тип данных у переменных. Одна и та же переменная может иметь разные типы данных в одной программе. Приведу пример.
// переменная $text имеет числовой тип echo $text; // вывод на экран 12345 $text = "Текст"; // переменная $text имеет строковый тип echo $text; // вывод на экран "Текст" $text = 5+5; // переменная $text имеет опять числовой тип echo $text; // вывод на экран 10 ?>
Чтобы вывести текст $text (название самой переменной) нужно поставить перед ней обратный слэш «\»:
unset(имя_переменной), которая позволяет уничтожать объявленные переменные. В основном это делается для освобождения памяти. Например:// объявление переменной $text if(isset($text)) echo "Переменная $text существует
"; else echo "Переменная $text не существует
"; // В данном случае будет выведено, что $text существует echo "Запускаем процедуру unset
"; unset($text); // Удаляем переменную $text if(isset($text)) echo "Переменная $text существует
"; else echo "Переменная $text не существует
"; // Будет выведено, что переменная $text не существует ?>С помощью функции isset(имя_переменной) можно проверять существование переменных. Функция возвращает true (истина) в случае существования и false (ложь) в противном случае. Очень похожей функцией является empty(имя_переменной) , которая возвращает true в случае если переменная не существует, равна нулю или пустой строке и false в противном случае.
Константы в PHP
Константы в PHP в отличии от переменных очень похожи на константы в других языках, поскольку они не могут менять своё значение. Для объявление константы в PHP есть специальная функция define("ИМЯ_КОНСТАНТЫ", значение_константы) . Приведем пример:
//некорректное объявление константы //поскольку первый символ должен быть не цифрой ?>Требования к именованию констант аналогичны требованиям именованию переменных. По этой причине в рассмотренном примере выше, последнее объявление константы "1CON" является некорректным.
В PHP принято именовать константы с больших букв (это является рекомендацией, а не требованием). Советую также придерживаться этой рекомендации, чтобы Вас лучше понимали другие php-программисты, да и Вам самим будет легче разбираться в своем коде соблюдая какие-то определенные правила.
Для проверки существования константы существует специальная функция defined(ИМЯ_КОНСТАНТЫ) , которая выдает true (истина) в случае существования константы и false (ложь) в другом случае. Приведем пример использования функции defined:
В PHP есть так же предопределенные константы, которые Вы можете видеть в таблице:
Константа Описание __LINE__ Текущая строка в файле __FILE__ Полный путь и имя текущего файла __FUNCTION__ Имя функции __CLASS__ Имя класса __METHOD__ Имя метода класса NULL Пустая константа (не путайте с нулем) Пример применения выше описанных предопределенных констант приведен ниже:
Внешние переменные в PHP
Выше мы рассмотрели переменные, которые объявляются внутри программы. Однако, создавая приложения для интернета, практически всегда необходимо работать с внешними данными полученными из вне.
Протокол HTTP позволяет передавать и считывать данные с помощью методов GET и POST . Выбор метода можно задать в html-формах (см. тег form).
Эти методы (GET и POST) являются очень важными, поэтому для описание этих методов был посвящен целый урок 3: использование методов GET и POST.
Что значит доллар в 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.
Why does PHP use a dollar sign $ to prefix variables?
Rasmus Lerdorf, the father of the PHP language, explains the $ sign as an ability to insert variables inside literal string values (interpolation), so that the variables are distinguished from the rest of the string. A dollar sign in front of variables in PHP is inspired by Perl which greatly influenced PHP during its early years.
Many other programming languages also use a dollar sign in their syntax. This symbol is called “sigil” and simplifies interpolation.
Names not prefixed by $ are considered constants, functions, class names, etc.
Sigil usage simplifies the variable interpolation into strings:
$name = "World"; echo "Hello, $name";
Where as in languages without sigil usage (for example, Python), you must either concatenate strings:
# Python name = "World" print "Hello, " + name
or use special interpolation syntax if the language provides it. For example, Ruby:
# Ruby name = "World" puts "Hello #name>"
Many people used to other languages might find the sigil usage odd, but you can get used to it in no time and discover its benefits.
See also