» »

PHP: Переменные и константы. Основы Узнать значение переменной php

18.11.2023

Переменная - это некая сущность, содержащая данные. Если тип данных это общее описание формата хранимых данных и способов работы с ними, то переменная представляет собой конкретный блок памяти компьютера. В этом блоке хранится значение переменной , а обратиться к блоку (и к значению) можно по имени переменной .


В PHP имя переменной всегда начинается со знака доллара ($), за которым обязательно должна следовать буква, после которой можно использовать буквы, цифры и знак подчёркивания. Имена чувствительны к регистру символов, т.е. переменные $value, $Value, $VALUE и $VaLuE - четыре РАЗНЫХ переменных, хотя их имя и читается одинаково.

Примеры синтаксически правильных имён переменных:

Пример некорректных имён:

Есть одно общее правило (для всех языков программирования), касающееся именования переменных. Правило очень простое: имена всегда должны быть осмысленными.

Пример плохо читаемого кода

Краткость, конечно, сетстра таланта, но жертвовать простотой восприятия кода ради его компактности - неразумно. Тем более, что длина имени никак не влияет на производительнось скрипта. Но не стоит и впадать в противоположную крайность - давать переменным слишком длинные имена. Если имя должно состоять из двух и более слов - части имени нужно выделять заглавными буквами или разделять подчёркиваниями. Например, имя $strusernameadndomain намного лучше воспринимается в виде $str_UserNameAndDomain .

Пример хорошо читаемого кода

Переменные бывают двух видов: обычные переменные (переменные-значения) и ссылочные переменные . Ключевое отличие между ними заключено в способе обработки данных. При присвоении значения обычной переменной присваиваемое значение полностью копируется, т.е. создаётся новый блок памяти, куда помещается копия исходного значения. При дальнейшей работе все изменения будут отражаться на этой копии, а не на исходных данных.

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

Рассмотрим пример:

Передача переменных по значению

Для работы с переменными есть в PHP особые функции:

  • isset() - проверяет, была ли объявлена переменная и отличается ли её значение от NULL;
  • empty() - аналог isset()
  • unset() - встроенная функция языка, удаляющая значение переменной и удаляющая саму переменную из списка доступных переменных (уничтожающая переменную).

Область видимости переменных

Очень важная характеристика переменной - её область видимости (область действия), т.е. описание того, из каких мест программы (скрипта) можно прочитать или изменить её значение. Следует всегда помнить, что переменная, объявленная внутри блока программы, видна только в пределах этого блока, а для того, чтобы обратиться к переменной, объявленной снаружи блока, необходимо её особым образом объявить.

Блоками программы в данном случае являются "скрипт", "функция" или "класс". Например:

Вроде бы всё правильно, но - не работает. Почему? Потому что если явно не сказать, что переменная $name внутри функции - это в действительности глобальная переменная $name, то интерпретатор создать временную копию переменной с именем $name и пустым значением. А так как значение пустое (неопределённое), то и результат сложения строк будет неопределён (пуст).

Исправить положение очень легко, достаточно добавить всего одну строку (выделена жирным шрифтом):

global $name; // явно указываем, что надо // использовать глобальную переменную. $fullName = $name . $family; echo "Имя внутри функции: ".$fullName; } echo "Имя ДО вызова функции: ".$name; // результат: "Имя ДО вызова функции: Вася" tryChengeName(" Иванов"); // результат: "Имя внутри функции: Вася Иванов" echo "Имя ПОСЛЕ вызова функции: ".$name; // результат: "Имя ПОСЛЕ вызова функции: Вася Иванов" ?>

В данном примере переменная $name имеет область видимости, равную всему скрипту, а переменная $fullName, объявленная внутри функции, имеет область определения равную этой самой функции. Это значит, при выходе их функции переменная $fullName будет уничтожена, а все попытки прочитать её значение приведут к ошибке.

Примеры работы с классами мы рассмотрим в разделе "Классы и наследование".

Переменные переменные

Да-да, здесь нет ошибки, именно так (двумя словами) называются некоторые переменные в PHP. Смысл в том, что текстовая часть имени переменной (т.е. имя без знака доллара) может сама быть именем. Например:

Настоятельно не рекомендуется пользоваться подобными приёмами без острой необходимости. Код, напичканый такими трюками, очень сложно сопровождать. Особенно это важно при работе с данными, вводимыми пользователями. Главная причина сложностей - неявные зависимости. Например, что случится, если вместо имени "Вася" написать что-то вроде """""_;%//^q"" ? Правильно! Скрипт в большинстве случаев не сможет выполниться! Можно, конечно, добавить кучу проверок на наличие "неправильных" символов, но проще вообще не пользоваться такими трюками.

Константы

Константа - это некая неизменная величина. Константа объявляется одновременно с именем и значением. Для объявления константы служит функция define() , а для определения наличия константы (т.е. была она определена или нет) - функция defined() . Имя константы строится по тем же правилам, что и имена переменных.

Примеры констант:

Отдельный вид констант PHP - так называемые "магические константы". Это системные константы, значение которых определяет и устанавливает интерпретатор. Таких констант немного:

  • __LINE__ Содержит номер текущей строки в текущем файле.
  • __FILE__ Содержит полное имя текущего файла
  • __FUNCTION__ Содержит имя текущей функции.
  • __CLASS__ Содержит имя текущего класса.
  • __METHOD__ Содержит имя текущего метода текущего класса.

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

— это ячейка памяти для хранения данных.

Почти все данные с которыми работает программа находятся в переменных.

Каждая переменная имеет своё собственное имя которое ей даёт программист.

Начинается оно всегда знаком $ , после которого можно ставить любые числа и буквы латиницы, а также знаки подчёркивания. Только первым знаком после $, цифру и подчёркивание ставить нельзя.

Количество знаков в имени — не ограничено, однако оно должно нести смысловую нагрузку, и быть понятным в прочтении.

В официальной документации PHP указано даже, что можно применять не только латиницу, но и любые символы, в том числе и русские буквы.

Однако, так как буквы кириллицы в различных кодировках имеют разный код, то применять их можно с осторожностью, или лучше вообще не применять.

Если название переменой состоит из нескольких слов, то писать их надо слитно, без пробела, и каждое слово, кроме первого начинать с заглавной буквы. Первое слово лучше начинать с маленькой буквы. Можно разделить слова знаком подчёркивания.

Имена переменных чувствительны к регистру букв, что конечно упрощает их выбор, так как next и nExt уже будут два разных имени.

Давайте напишем скрипт с переменными, и выведем содержащиеся в них данные на экран.

$next = "Это данные в переменной";
$nExt = "Это данные в другой переменной";
echo "$next. $nExt";
?>

Браузер должен показать вот такую строку.

Разберём скрипт по составу.

$ — с этого знака всегда начинается имя переменной.
nExt — имя переменной.
= — оператор присвоения.
"Это данные в другой переменной" — значение переменной.
echo — команда вывод на экран.
?> — конечный тег php

Первые две строки после начального тега — объявление переменной. Т.е. указывается имя переменной и вся информация которая в ней содержится.

Объявление переменной делается один раз в начале скрипта, после чего она может использоваться бесконечное число раз без указания содержимого.

И в подтверждении этого ещё один скрипт, в котором для вывода на экран используется только название переменной.

$scolco_let= 5.5 ;
$marcaAvto= "Лада";
$probegAvto= 100 ;

?>

Как видите, для разделения числовых значений, в качестве разделителя в php применяется точка.

С переменными можно производить различные математические действия — увеличивать, уменьшать делить и умножать.

Делается это следующим образом: после имени переменной ставится нужный математический оператор, определяющий вид действия (+, -, *, /), затем оператор присвоения (=), и число, на которое нужно произвести действие.

$x= 10 ;
$x+= 10 ;
echo "$x";
?>

Эта программа выведет число 20.

PHP поддерживает восемь простых типов данных (переменных), но преимуществом этого языка является то, что он не требует ни описывать переменные явно, ни указывать их тип. Интерпретатор все это поймёт и сделает сам.

Однако иногда он может ошибиться, поэтому изредка возникает необходимость явно указывать, какой же тип имеет та или иная переменная.

Если по простому, то тип переменной определяется её содержанием. Если в переменной число — это integer или double (числовые типы), если строка — строковой тип string и т.д.

На имя переменной её тип не влияет, т.е. по имени невозможно определить к какому типу переменная относится.

Для определения типа переменной, при необходимости, есть специальная функция, но об этом чуть ниже.

Основные типы переменных:

integer — Целые числа разрядность которых зависит от разрядности операционной системы компьютера.

Если она составляет 32 бита то число может принимать значение от -2 147 483 648 до 2 147 483 647, если разрядность 64 бита, то от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

double (float) — Число с плавающей точкой значение которого возможно от 1.7 х 10 -308 до 1.7 х 10 308 с любым знаком (+ или -).

string — Строковый тип. может хранить строки любого объёма.

boolean — логический тип принимающий лишь два значения: true (истина) и false (ложь).

array — Тип массивы — это объединение нескольких однотипных переменных.

object — Тип объект — объединение нескольких разнотипных переменных и методов их обработки.

resourse — Тип применяющийся при работе с файлами базами данных и другими ресурсами, доступ к которым осуществляется через библиотечные функции.

NULL — Специальный тип, предупреждающий о том что переменная не была инициализирована.

Рассмотрим их в общих чертах по порядку. Хоть переменные php и не требуют строгого задания типа, при их объявлении, но общие понятия о них, думаю, иметь всё же необходимо.

Целые числа (integer) .

Целые числа — это наиболее простой, а значит и наиболее быстродействующий тип данных. По умолчанию задаются они в десятичной системе исчисления. Однако php допускает задавать их в восьмеричной и шестнадцатеричной системах.

Что это значит? В восьмеричной системе основанием числа служит величина 8, так же как 10 в десятичной системе, а для всех чисел используются цифры от 0 до 7

В шестнадцатеричной, соответственно, величина 16, и цифры от 0 до 9. Кроме того в шестнадцатеричной системе для выражения числа применяются буквы английского алфавита A, B, C, D, E, F, обозначающие цифры, соответственно 10, 11, 12, 13, 14, 15.

В значениях переменных перед числом в восьмеричной системе ставиться префикс 0, а в шестнадцатеричной — 0х

$next= 123 ; //десятичное число
$next= 0123 ; //восьмеричное число
$next= 0x123 ; //шестнадцатеричное число
$next= 0xABCDEF ; //шестнадцатеричное число
?>

Число с плавающей точкой, вещественное число (double или float) .

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

Существуют две формы записи числа с плавающей точкой — стандартная и научная, отличающаяся от стандартной записью чисел больше и меньше единицы. Мы, в основном, будем иметь дело со стандартной формой, но на всякий случай я покажу обе.

//Объявление вещественного числа в стандартной форме
$next= 1.23456 ;
$next= -1.23456 ; //Отрицательное вещественное число
//Объявление вещественного числа в научной форме
$next= 1.23456 ; //Положительное вещественное число
$next= 1.23456e+2 ; //Положительное число больше единицы (123.456)
$next= 1.23456e-2 ; //Положительное число меньше единицы (0.0123456)
?>

Как видите, в научной записи порядок указывается буквой «е» и числом определяющим его величину.

Строки (string)

Строки могут принимать любой, произвольный размер, и формируются путём заключения той или иной фразы в кавычки. В php используется 3 вида кавычек.

Это прямые двойные кавычки, прямые одиночные кавычки (апострофы), и прямые обратные кавычки (обратные апострофы).

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

echo "Зададим class="next" для следующих элементов";
?>

Ещё один пример применения двойных кавычек мы уже видели в начале статьи. Посмотрим ещё раз более подробно.

$scolco_let= 5.5 ;
$marcaAvto= "Лада";
$probegAvto= 100 ;
echo "За $scolco_let лет $marcaAvto проехала $probegAvto тыс. км.";
?>

Как видно, если разместить в кавычках имя переменной, то на экран выводится её значение.

Допускается так же обрамление двойных кавычек двойными же кавычками, но в таком случае внутренние кавычки экранируются обратным слешем.

echo "Зададим class=\"next\" для следующих элементов";
?>

Бывают случаи, когда при размещении переменной в строке необходимо точно указать её границы. Обычно тогда, когда значение переменной является частью слова. Для этого применяются фигурные скобки.

$next= "Бензо";
echo "Работает {$next}-генератор."; //Работает Бензо-генератор.
echo "Засорился {$next}насос."; //Засорился Бензонасос.
?>

Логический тип (boolean)

Как уже говорилось выше, переменные этого типа могут принимать только два значения — TRUE (истина) и FALSE (ложь). Используются они для сравнения и управления циклами.

Более подробно их рассмотрим в статье посвящённой операторам php.

Массивы(array)

Массивы — это набор данных, состоящий из однотипных элементов.

$next[ 0 ]= "Бульдог";
$next[ 1 ]= "Питбуль";
$next[ 2 ]= "Дог";
echo $next[ 0 ] ;
echo "
";
echo $next[ 1 ] ;
echo "
";
echo $next[ 2 ] ;
?>

Квадратные скобки указывают, что это элемент массива, а в них помещён индекс массива, через который можно обратиться к конкретной переменной.

Объект(object)

Объект по сути является большой переменной, которая содержит в себе данные и функции для их обработки. Создаётся он по специальному шаблону называемому классом. Данные и функции называются членами класса.

Структура объекта схожа с массивом, только для доступа к его отдельным элементам применяются не квадратные скобки, а оператор ->.

Инициализации объекта осуществляется выражением new, которое создаёт в переменной экземпляр объекта.

class foo
{
function do_foo()
{
echo "Doing foo.";
}
}

$bar = new foo;
$bar-> do_foo();
?>

К объектам мы ещё вернёмся и будем изучать их более подробно.

Специальный тип NULL предназначен для того, чтоб отметить неинициализированную переменную. Такая переменная образуется, если в ней пропущен оператор присвоения = , или если она уничтожается конструкцией unset() .

Определение типа переменной

Для определения типа переменной, в php поддерживается несколько типов функций. Это функции проверяющие принадлежность переменной к определённому типу данных (is_string() , is_integer() , is_bolead() и так далее).

Все они начинаются префиксом is_ после которого идёт название типа.

Универсальной функцией, позволяющей определить тип любой переменной, является функция gettype() . Получив в качестве аргумента переменную, она возвращает её тип.

//Объявляем переменную с целым числом
$next= 123 ;
echo gettype($next); //выведет integer

//Объявляем переменную с вещественным числом
$next= 1.23456 ;
echo gettype($next); //выведет double

//Объявляем переменную со строкой
$next= "......";
echo gettype($next); //выведет string
?>

Пока про переменные достаточно. В процессе прохождения курса мы ещё много раз столкнёмся с ними, и с методами их обработки, поэтому подробно разбирать всё это будем по месту применения.


Перемена

– Мама! А правда я такая страшная?
– Сейчас ничего, а когда родилась, доктор сказал: «Зашевелится, стреляйте…»

12 years ago

A little gotcha to watch out for:

If you turn off RegisterGlobals and related, then use get_defined_vars(), you may see something like the following:

Array
[ GLOBALS ] => Array
[ GLOBALS ] => Array
* RECURSION *
[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()
)

[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()

)
?>

Notice that $_SERVER isn"t there. It seems that php only loads the superglobal $_SERVER if it is used somewhere. You could do this:

print "

"
.
htmlspecialchars
(print_r
(get_defined_vars
(),
true
)) .
"
" ;
print "
"
.
htmlspecialchars
(print_r
($_SERVER
,
true
)) .
"
" ;
?>

And then $_SERVER will appear in both lists. I guess it"s not really a gotcha, because nothing bad will happen either way, but it"s an interesting curiosity nonetheless.

6 years ago

Since get_defined_vars() only gets the variables at the point you call the function, there is a simple way to get the variables defined within the current scope.

// The very top of your php script
$vars = get_defined_vars ();

// Now do your stuff
$foo = "foo" ;
$bar = "bar" ;

// Get all the variables defined in current scope
$vars = array_diff (get_defined_vars (), $vars );

echo "

"
;
print_r ($vars );
echo "
" ;
?>

15 years ago

Here is a function which generates a debug report for display or email
using get_defined_vars. Great for getting a detailed snapshot without
relying on user input.

function generateDebugReport ($method , $defined_vars , $email = "undefined" ){
// Function to create a debug report to display or email.
// Usage: generateDebugReport(method,get_defined_vars(),email);
// Where method is "browser" or "email".

// Create an ignore list for keys returned by "get_defined_vars".
// For example, HTTP_POST_VARS, HTTP_GET_VARS and others are
// redundant (same as _POST, _GET)
// Also include vars you want ignored for security reasons - i.e. PHPSESSID.
$ignorelist =array("HTTP_POST_VARS" , "HTTP_GET_VARS" ,
"HTTP_COOKIE_VARS" , "HTTP_SERVER_VARS" ,
"HTTP_ENV_VARS" , "HTTP_SESSION_VARS" ,
"_ENV" , "PHPSESSID" , "SESS_DBUSER" ,
"SESS_DBPASS" , "HTTP_COOKIE" );

$timestamp = date ("m/d/y h:m:s" );
$message = "Debug report created $timestamp \n" ;

// Get the last SQL error for good measure, where $link is the resource identifier
// for mysql_connect. Comment out or modify for your database or abstraction setup.
global $link ;
$sql_error = mysql_error ($link );
if($sql_error ){
$message .= "\nMysql Messages:\n" . mysql_error ($link );
}
// End MySQL

// Could use a recursive function here. You get the idea ;-)
foreach($defined_vars as $key => $val ){
if(is_array ($val ) && ! in_array ($key , $ignorelist ) && count ($val ) > 0 ){
$message .= "\n $key array (key=value):\n" ;
foreach($val as $subkey => $subval ){
if(! in_array ($subkey , $ignorelist ) && ! is_array ($subval )){
$message .= $subkey . " = " . $subval . "\n" ;
}
elseif(! in_array ($subkey , $ignorelist ) && is_array ($subval )){
foreach($subval as $subsubkey => $subsubval ){
if(! in_array ($subsubkey , $ignorelist )){
$message .= $subsubkey . " = " . $subsubval . "\n" ;
}
}
}
}
}
elseif(!
is_array ($val ) && ! in_array ($key , $ignorelist ) && $val ){
$message .= "\nVariable " . $key . " = " . $val . "\n" ;
}
}

If($method == "browser" ){
echo nl2br ($message );
}
elseif($method == "email" ){
if($email == "undefined" ){
$email = $_SERVER [ "SERVER_ADMIN" ];
}

$mresult = mail ($email , "Debug Report for " . $_ENV [ "HOSTNAME" ]. "" , $message );
if($mresult == 1 ){
echo "Debug Report sent successfully.\n" ;
}
else{
echo "Failed to send Debug Report.\n" ;
}
}
}
?>

17 years ago

Simple routine to convert a get_defined_vars object to XML.

function obj2xml ($v , $indent = "" ) {
while (list($key , $val ) = each ($v )) {
if ($key == "__attr" ) continue;
// Check for __attr
if (is_object ($val -> __attr )) {
while (list($key2 , $val2 ) = each ($val -> __attr )) {
$attr .= " $key2 =\" $val2 \"" ;
}
}
else $attr = "" ;
if (is_array ($val ) || is_object ($val )) {
print(" $indent < $key$attr >\n" );
obj2xml ($val , $indent . " " );
print(" $indent \n" );
}
else print(" $indent < $key$attr > $val \n" );
}
}

//Example object
$x -> name -> first = "John" ;
$x -> name -> last = "Smith" ;
$x -> arr [ "Fruit" ] = "Bannana" ;
$x -> arr [ "Veg" ] = "Carrot" ;
$y -> customer = $x ;
$y -> customer -> __attr -> id = "176C4" ;

$z = get_defined_vars ();
obj2xml ($z [ "y" ]);
?>
will output:


John
Smith


Bannana
Carrot

10 years ago

As a note, get_defined_vars() does not return a set of variable references (as I hoped). For example:

// define a variable
$my_var = "foo" ;

// get our list of defined variables
$defined_vars = get_defined_vars ();

// now try to change the value through the returned array
$defined_vars [ "my_var" ] = "bar" ;

echo $my_var , "\n" ;

?>

will output "foo" (the original value). It"d be nice if get_defined_vars() had an optional argument to make them references, but I imagine its a rather specialized request. You can do it yourself (less conveniently) with something like:

$defined_vars = array();
$var_names = array_keys (get_defined_vars ());

foreach ($var_names as $var_name )
{
$defined_vars [ $var_name ] =& $ $var_name ;
}

?>

1 year ago

I posted here before about "this" being in get_defined_vars.

It turns out it"s not always there but in certain cases it will inexplicably appear.

Php -r "
class Test {
public function a() {var_dump(array_keys(get_defined_vars()));$a = 123;}
public function b() {var_dump(array_keys(get_defined_vars()));$this;}
}
$t = new Test();
$t->a();
$t->b();
"

Array()
array("this")

This does not happen in PHP 7.2 but will happen in PHP 5.6.

1 year ago

Some comments here point out that this function wont return references. It does however return names and names are "references".

I would not recommend the suggestions here that convert it to references.

Public function x($a, $b, $c) {
foreach(array_keys(get_defined_vars()) as $key)
if($key !== "this")
$this->y(${$key});
}

Public function y(&$input) {
$input++;
}

Instead of ${} you can also use $$.

I have done some whacky things in my time to make extremely generic code but I"ve never had to do anything like the above. It might not even work (but should since it"s no different to $a[$key]).

You could also do $$key++ but I"ve never seen code like that which wasn"t horrifically bad (using dynamic where dynamic isn"t beneficial).

If you"re doing something like that then give it additional scrutiny.

В этой статье, я попытаюсь дать комплексный обзор обо всех видах переменных существующих в PHP.

Переменная в PHP — это именованная область в памяти, которая хранит в себе какие-либо данные: числа, строки (текст) и т.д. У каждой переменной в памяти имеется свой уникальный адрес, который даётся ей при её создании. Имя переменной ссылается на этот адрес.

У переменной имеется имя (которое вы придумываете сами при создании переменной), обращаясь к переменной по имени, можно получить данные которая она в себе хранит. Получая доступ к переменной по её имени, мы можем оперировать данными хранящимися в переменной: сохранять, считывать, изменять и удалять их.

Имена переменных в PHP начинаются со знака доллара $ :

$имяПеременной; // объявление переменной $имяПеременной = значение; // инициализация переменной

При инициализации, переменная создаётся автоматически, поэтому её можно и не объявлять:

$имяПеременной = значение; // одновременное объявление и инициализация переменной

Значения переменных в PHP

В качестве значения переменной, могут выступать:
— обычные значения (строки, числа, boolean и т.д.),
— другие переменные,
— ссылочные переменные,
— функции (значение которое возвращает функция),
— константы, массывы, объекты и т.д.

Приведём примеры присваивания переменным различных значений:

$var = 5; // присвоили переменной число $var = "Строка"; // присвоили переменной строку $var = true; // присвоили переменной булево значение $var = NULL; // присвоили переменной значение NULL $var = array(1, "два", true); // присвоили переменной массив $var = $var; // присвоили переменной элемент массива $var = $_POST["var"]; // присвоили переменной данные из формы $var = new Object(); // присвоили переменной объект

Виды переменных в PHP

Переменные в PHP подразделяются на несколько видов, рассмотрим их:

  • Обычные переменные (присваивание по значению).
  • Ссылочные переменные (присваивание по ссылке).
  • Переменные переменных (динамические переменные).

Ссылочные переменные в PHP

Имя обычной переменной ссылается на адрес в памяти , в которой хранятся данные, на один и тот же адрес памяти могут ссылаться несколько переменных. Для того чтобы на одни и те же данные ссылались несколько переменных, нам помогут ссылочные переменные.

Ссылочные переменные это присваивание по ссылке . Для того чтобы присвоить какую-либо переменную по ссылке, нужно перед её именем добавить знак амперсанд & , пример:

$a = 5; $b = & $a; $a = 7; echo $b; // выведет 7

Если изменим значение переменной $b , то значение для переменной $a тоже изменится.

Переменные переменных в PHP

Переменные переменных (динамические переменные) применяются крайне редко, просто знайте о них. Чтобы использовать динамическую переменную, нужно перед именем переменной, добавить ещё один знак доллара $ .

$hello = "world"; $a = "hello"; echo $a; // покажет hello echo $ $a; // покажет world

Разберём четвёртую строку:
echo $$a — это $ и $a , $a — это hello , соединяем $ и hello , получаем переменную $hello которая имеет значение world .

Разное о переменных в PHP

При обращении к несуществующей переменной, браузер покажет сообщение об ошибке, чтобы отключить сообщения об ошибках, можно использовать символ эт @ , пример:

Echo @$имяПеременной;

Если нужно отделить переменную от информации, но при этом записать их слитно, то можно использовать фигурные скобки { } .

1.3K

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

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

Присвоение имени и создание переменной в PHP

Все имена переменных PHP должны быть снабжены префиксом $ . Он информирует препроцессор языка, что он имеет дело с переменной. Первый символ имени должен быть буквой или символом подчеркивания (_) . Остальные символы могут быть только буквами, цифрами или символами подчеркивания. Все остальные символы считаются недействительными для использования в имени переменной.

Посмотрим на некоторые допустимые и недопустимые имена переменных PHP :

$_myName // допустимо. $myName // допустимо. $__myvar // допустимо. $myVar21 // допустимо. $_1Big // недопустимо, подчеркивание должно следовать после буквы. $1Big // недопустимо - должно начинаться с буквы или символа подчеркивания. $_er-t // недопустимо - содержит буквенно-цифровой символ (-).

Имена PHP переменных чувствительны к регистру. Это означает, что PHP считает переменную $ _myVariable отличной от переменной » $ _myvariable .

Присвоение значения переменной РНР

Переменные инициализируются значениями с помощью оператора присваивания PHP (=) . Чтобы присвоить значение переменной, ее имя помещается слева от выражения, за которым следует оператор присваивания. Значение, которое присваивается после PHP объявления переменных, помещается справа от оператора присваивания. Строка, как и во всех выражениях PHP кода , завершается точкой с запятой (;) .

Начнем с присвоения слова «Круг » переменной с именем myShape :

$myShape = "Круг";

Мы объявили переменную с именем myShape и присвоили ей строковое значение «Круг «. Аналогичным образом можно объявить переменную, содержащую численное значение:

$numberOfShapes = 6;

Мы создаем переменную numberOfShapes и присваиваем ей числовое значение 6 . После того, как PHP переменная была создана, присвоенное ей значение может быть изменено с помощью оператора присваивания:

Доступ к PHP значениям переменных

Теперь мы должны рассмотреть, как получить доступ к текущему значению, присвоенному переменной. Например, если мы хотим вывести на экран значение, которое мы присваивали переменной numberOfShapes , нужно сослаться на него в команде echo :

Это приведет к следующему выводу в браузере:

Номер фигуры 6.

Точно так же можно отобразить значение переменной myShape :

Примеры, использованные для демонстрации доступа к значениям переменных, простые, потому что у нас всегда был пробел после имени переменной. Возникает вопрос, Что делать, если нужно поставить другие символы сразу после имени PHP переменной. Например:

То, что нам нужно в этом случае выводится следующим образом:

Круг это 6-я фигура.

К сожалению, PHP будет видеть th на конце имени переменной $ numberOfShapes как часть имени. Затем он попытается вывести значение переменной $ numberOfShapesth , которой не существует. Это приводит к тому, что значение этой переменной не отображается:

Круг это фигура.

Можно обойти эту проблему, поставив фигурные скобки ({ }) вокруг имени переменной, чтобы экранировать ее от других символов:

Что дает нам желаемый результат:

Круг это 6-я фигура.

Изменение типа РНР переменной

PHP типы переменных: целое, вещественное, логическое, массив, объект и строка. Для начала рассмотрим изменение типа переменной после ее создания.

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

Слабо типизированные языки, такие как PHP и JavaScript , позволяют изменять тип переменной в любой момент существования переменной путем присвоения ей значения другого типа. Например, можно создать переменную, присвоить ей целое значение, а позже поменять на string .