Как присвоить значение переменной в php
Переменные хранят отдельные значения, которые можно использовать в выражениях PHP. Для определения переменных применяется знак доллара $ . Например:
Здесь определена переменная $num . Поскольку определение переменной — это отдельная инструкция, она завершается точкой с запятой.
Как правило, названия переменный начинаются с маленькой буквы или символа подчеркивания. Стоит учитывать, что PHP является регистрозависимым языком, а значит, переменные $num и $Num будут представлять две разные переменные.
Также при наименовании переменных нам надо учитывать следующие правила:
- Имена переменных должны начинаться с алфавитного символа или с подчеркивания
- Имена переменных могут содержать только символы: a–z, A–Z, 0–9, и знак подчеркивания
- Имена переменных не должны включать в себя пробелы
С помощью операции присвоения ( = ) переменной присваивается определенное значение:
$num = 10;
Здесь определена переменная $num , которая хранит число 10.
После определения переменной и присвоения ей значения мы можем использовать ее в выражениях PHP. Например, вывести ее значение на веб-страницу:
METANIT.COM
С помощью функции echo значение переменной $num выводится на веб-страницу. И при обращении к скрипту мы увидим значение переменной $num :
Отличительной особенностью переменных является то, что мы можем изменять их значение:
Также можно присваивать значение другой переменной:
$a = 15; $b = $a; echo $b;
Если переменная объявлена, но ей изначально не присвоено никакого значения (иначе говоря она не инициализирована), то нам будет проблематично ее использовать. Например:
При попытке вывести значение переменной мы получим диагностическое сообщение о том, что переменная не определена:
Warning: Undefined variable $num in C:\localhost\hello.php on line 13 22
Поэтому перед использованием переменной ей следует присвоить начальное значение.
Вывод значения переменной
В предыдущих примерах для вывода значения переменной применялась команда echo , после которой указывалось выводимое значение. Однако есть и другой способ вывести значение переменной. Например, мы хотим одновременно вывести значения двух переменных:
Здесь функции echo передается строка. Чтобы встроить в строку значение переменной, в этой строке указываем имя переменной вместе со знаком $. И кода в строке PHP встретит выражение $num_1 , он заменит это выражение значением переменной $num_1. То же самое касается и переменной $num_2 . В итоге при выполнении этого скрипта браузер отобразит значения обеих переменных:
num_1 = 11 num_2=35
Как присвоить значение переменной в php
It may be worth specifically noting, if variable names follow some kind of «template,» they can be referenced like this:
// Given these variables .
$nameTypes = array( «first» , «last» , «company» );
$name_first = «John» ;
$name_last = «Doe» ;
$name_company = «PHP.net» ;
// Then this loop is .
foreach( $nameTypes as $type )
print $ < "name_ $type " >. «\n» ;
// . equivalent to this print statement.
print » $name_first \n $name_last \n $name_company \n» ;
?>
This is apparent from the notes others have left, but is not explicitly stated.
4 years ago
The feature of variable variable names is welcome, but it should be avoided when possible. Modern IDE software fails to interpret such variables correctly, regular find/replace also fails. It’s a kind of magic 🙂 This may really make it hard to refactor code. Imagine you want to rename variable $username to $userName and try to find all occurrences of $username in code by checking «$userName». You may easily omit:
$a = ‘username’;
echo $$a;
1 year ago
In addition, it is possible to use associative array to secure name of variables available to be used within a function (or class / not tested).
This way the variable variable feature is useful to validate variables; define, output and manage only within the function that receives as parameter
an associative array :
array(‘index’=>’value’,’index’=>’value’);
index = reference to variable to be used within function
value = name of the variable to be used within function
$vars = [ ‘id’ => ‘user_id’ , ’email’ => ‘user_email’ ];
function validateVarsFunction ( $vars )
//$vars[‘id’]=34; // define allowed variables
$user_id = 21 ;
$user_email = ’email@mail.com’ ;
echo $vars [ ‘id’ ]; // prints name of variable: user_id
echo $< $vars [ 'id' ]>; // prints 21
echo ‘Email: ‘ .$< $vars [ 'email' ]>; // print email@mail.com
// we don’t have the name of the variables before declaring them inside the function
>
?>
8 years ago
If you want to use a variable value in part of the name of a variable variable (not the whole name itself), you can do like the following:
$price_for_monday = 10 ;
$price_for_tuesday = 20 ;
$price_for_wednesday = 30 ;
$price_for_today = $< 'price_for_' . $today >;
echo $price_for_today ; // will return 20
?>
16 years ago
One interesting thing I found out: You can concatenate variables and use spaces. Concatenating constants and function calls are also possible.
define ( ‘ONE’ , 1 );
function one () <
return 1 ;
>
$one = 1 ;
$ < "foo $one " >= ‘foo’ ;
echo $foo1 ; // foo
$ < 'foo' . ONE >= ‘bar’ ;
echo $foo1 ; // bar
$ < 'foo' . one ()>= ‘baz’ ;
echo $foo1 ; // baz
?>
This syntax doesn’t work for functions:
// You’ll have to do:
$func = «php $foo » ;
$func ();
?>
Note: Don’t leave out the quotes on strings inside the curly braces, PHP won’t handle that graciously.
13 years ago
PHP actually supports invoking a new instance of a class using a variable class name since at least version 5.2
class Foo public function hello () echo ‘Hello world!’ ;
>
>
$my_foo = ‘Foo’ ;
$a = new $my_foo ();
$a -> hello (); //prints ‘Hello world!’
?>
Additionally, you can access static methods and properties using variable class names, but only since PHP 5.3
class Foo public static function hello () echo ‘Hello world!’ ;
>
>
$my_foo = ‘Foo’ ;
$my_foo :: hello (); //prints ‘Hello world!’
?>
21 years ago
The ‘dollar dereferencing’ (to coin a phrase) doesn’t seem to be limited to two layers, even without curly braces. Observe:
$one = «two» ;
$two = «three» ;
$three = «four» ;
$four = «five» ;
echo $$$ $one ; //prints ‘five’.
?>
This works for L-values as well. So the below works the same way:
$one = «two» ;
$ $one = «three» ;
$$ $one = «four» ;
$$$ $one = «five» ;
echo $$$ $one ; //still prints ‘five’.
?>
NOTE: Tested on PHP 4.2.1, Apache 2.0.36, Red Hat 7.2
21 years ago
You may think of using variable variables to dynamically generate variables from an array, by doing something similar to: —
foreach ( $array as $key => $value )
$ $key = $value ;
>
?>
This however would be reinventing the wheel when you can simply use:
extract ( $array , EXTR_OVERWRITE );
?>
Note that this will overwrite the contents of variables that already exist.
Extract has useful functionality to prevent this, or you may group the variables by using prefixes too, so you could use: —
$array =array( «one» => «First Value» ,
«two» => «2nd Value» ,
«three» => «8»
);
extract ( $array , EXTR_PREFIX_ALL , «my_prefix_» );
?>
This would create variables: —
$my_prefix_one
$my_prefix_two
$my_prefix_three
containing: —
«First Value», «2nd Value» and «8» respectively
21 years ago
Another use for this feature in PHP is dynamic parsing..
Due to the rather odd structure of an input string I am currently parsing, I must have a reference for each particular object instantiation in the order which they were created. In addition, because of the syntax of the input string, elements of the previous object creation are required for the current one.
Normally, you won’t need something this convolute. In this example, I needed to load an array with dynamically named objects — (yes, this has some basic Object Oriented programming, please bare with me..)
// this is only a skeletal example, of course.
$object_array = array();
// assume the $input array has tokens for parsing.
foreach ( $input_array as $key => $value ) <
// test to ensure the $value is what we need.
$obj = «obj» . $key ;
$ $obj = new Obj ( $value , $other_var );
Array_Push ( $object_array , $ $obj );
// etc..
>
?>
Now, we can use basic array manipulation to get these objects out in the particular order we need, and the objects no longer are dependant on the previous ones.
I haven’t fully tested the implimentation of the objects. The scope of a variable-variable’s object attributes (get all that?) is a little tough to crack. Regardless, this is another example of the manner in which the var-vars can be used with precision where tedious, extra hard-coding is the only alternative.
Then, we can easily pull everything back out again using a basic array function: foreach.
//.
foreach( $array as $key => $object )
echo $key . » — » . $object -> print_fcn (). »
\n» ;
?>
Through this, we can pull a dynamically named object out of the array it was stored in without actually knowing its name.
Как присвоить значение переменной в 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
function test ()
return 25 ;
>
Хорошей практикой считается инициализировать переменные, хотя в 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
13 years ago
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
The basic assignment operator is «=». Your first inclination might be to think of this as «equal to». Don’t. It really means that the left operand gets set to the value of the expression on the right (that is, «gets set to»).
The value of an assignment expression is the value assigned. That is, the value of » $a = 3 » is 3. This allows you to do some tricky things:
$a = ( $b = 4 ) + 5 ; // $a is equal to 9 now, and $b has been set to 4.
In addition to the basic assignment operator, there are «combined operators» for all of the binary arithmetic, array union and string operators that allow you to use a value in an expression and then set its value to the result of that expression. For example:
$a = 3 ;
$a += 5 ; // sets $a to 8, as if we had said: $a = $a + 5;
$b = «Hello » ;
$b .= «There!» ; // sets $b to «Hello There!», just like $b = $b . «There!»;
Note that the assignment copies the original variable to the new one (assignment by value), so changes to one will not affect the other. This may also have relevance if you need to copy something like a large array inside a tight loop.
An exception to the usual assignment by value behaviour within PHP occurs with object s, which are assigned by reference. Objects may be explicitly copied via the clone keyword.
Assignment by Reference
Assignment by reference is also supported, using the » $var = &$othervar; » syntax. Assignment by reference means that both variables end up pointing at the same data, and nothing is copied anywhere.
Пример #1 Assigning by reference
$a = 3 ;
$b = & $a ; // $b is a reference to $a
?php
print » $a \n» ; // prints 3
print » $b \n» ; // prints 3
$a = 4 ; // change $a
print » $a \n» ; // prints 4
print » $b \n» ; // prints 4 as well, since $b is a reference to $a, which has
// been changed
?>
The new operator returns a reference automatically, as such assigning the result of new by reference is an error.
Результат выполнения данного примера:
Parse error: syntax error, unexpected 'new' (T_NEW) in …
More information on references and their potential uses can be found in the References Explained section of the manual.
Arithmetic Assignment Operators
Example | Equivalent | Operation |
---|---|---|
$a += $b | $a = $a + $b | Addition |
$a -= $b | $a = $a — $b | Subtraction |
$a *= $b | $a = $a * $b | Multiplication |
$a /= $b | $a = $a / $b | Division |
$a %= $b | $a = $a % $b | Modulus |
$a **= $b | $a = $a ** $b | Exponentiation |
Bitwise Assignment Operators
Example | Equivalent | Operation |
---|---|---|
$a &= $b | $a = $a & $b | Bitwise And |
$a |= $b | $a = $a | $b | Bitwise Or |
$a ^= $b | $a = $a ^ $b | Bitwise Xor |
$a | $a = $a | Left Shift |
$a >>= $b | $a = $a >> $b | Right Shift |
Other Assignment Operators
Example | Equivalent | Operation |
---|---|---|
$a .= $b | $a = $a . $b | String Concatenation |
$a ??= $b | $a = $a ?? $b | Null Coalesce |
Смотрите также
- arithmetic operators
- bitwise operators
- null coalescing operator
User Contributed Notes 7 notes
12 years ago
Using $text .= «additional text»; instead of $text = $text .»additional text»; can seriously enhance performance due to memory allocation efficiency.
I reduced execution time from 5 sec to .5 sec (10 times) by simply switching to the first pattern for a loop with 900 iterations over a string $text that reaches 800K by the end.
8 years ago
Be aware of assignments with conditionals. The assignment operator is stronger as ‘and’, ‘or’ and ‘xor’.
$x = true and false ; //$x will be true
$y = ( true and false ); //$y will be false
?>
16 years ago
bradlis7 at bradlis7 dot com’s description is a bit confusing. Here it is rephrased.
echo $a , «\n» , $b ; ?>
outputs
Because the assignment operators are right-associative and evaluate to the result of the assignment
$a .= $b .= «foo» ;
?>
is equivalent to
$a .= ( $b .= «foo» );
?>
and therefore
$b .= «foo» ;
$a .= $b ;
?>
4 months ago
8 years ago
PHP uses a temporary variable for combined assign-operators (unlike JavaScript), therefore the left-hand-side (target) gets evaluated last.
Meaning:
$a = ($b + $c) + $a;
This can be important if the target gets modified inside the expression.
$a = 0;
$a += (++$a) + (++$a); // yields 5 (instead of 4)
9 years ago
Document says:
«An exception to the usual assignment by value behaviour within PHP occurs with objects, which are assigned by reference in PHP 5. Objects may be explicitly copied via the clone keyword.»
But it’s not very accurate! Considering this code:
$a = new StdClass ;
$b = $a ;
$a = new StdClass ;
var_dump ( $a , $b );
?>
Output:
object(stdClass)#2 (0) >
object(stdClass)#1 (0) >
Note: #2 and #1 means two different objects.
But this code:
$a = new StdClass ;
$b = & $a ;
$a = new StdClass ;
var_dump ( $a , $b );
?>
Output will be:
object(stdClass)#2 (0) >
object(stdClass)#2 (0) >
Note: Still pointing to the same object.
And this shows that that exception is not valid, PHP assignment for objects still makes a copy of variable and does not creates a real reference, albeit changing an object variable members will cause both copies to change.
So, I would say assignment operator makes a copy of ‘Object reference’ not a real object reference.