PHP 8.4.2 Released!

基础

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。

有效的变量名由字母(A-Za-z 或 128 到 255 之间的字节)或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。 按照正常的正则表达式,它将被表述为:^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$

注意: PHP 不支持 Unicode 变量名,但是,某些字符编码(例如 UTF-8)会以这样的方式对字符进行编码,即多字节字符的所有字节都在允许的范围内,从而使其成为有效的变量名。

注意: $this 是一个特殊的变量,它不能被赋值。PHP 7.1.0 之前,间接赋值(例如通过使用可变变量)是可能的。

小技巧

请参见用户空间命名指南

示例 #1 有效和无效变量名

<?php
$var
= 'Bob';
$Var = 'Joe';
echo
"$var, $Var"; // 输出 "Bob, Joe"

$4site = 'not yet'; // 非法变量名;以数字开头
$_4site = 'not yet'; // 合法变量名;以下划线开头
$i站点is = 'mansikka'; // 合法变量名;可以用中文
?>

PHP 接受任意字节序列作为变量名。不遵循上述命名规则的变量名只能在运行时动态访问。有关如何访问变量的信息,请参阅可变变量

示例 #2 访问模糊的变量名

<?php
${'invalid-name'} = 'bar';
$name = 'invalid-name';
echo ${
'invalid-name'}, " ", $$name;
?>

以上示例会输出:

bar bar

变量默认始终传值赋值。那也就是说,当表达式的值赋值给变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。有关这种类型的赋值操作,请参阅表达式一章。

PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。

使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。例如,下列代码片断将输出“My name is Bob”两次:

<?php
$foo
= 'Bob'; // 将 'Bob' 赋给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo
$bar = "My name is $bar"; // 修改 $bar 变量
echo $bar;
echo
$foo; // $foo 的值也被修改
?>

有一点重要事项必须指出,那就是只有变量才可以引用赋值。

<?php
$foo
= 25;
$bar = &$foo; // 合法的赋值
$bar = &(24 * 7); // 非法; 引用没有名字的表达式

function test()
{
return
25;
}

$bar = &test(); // 无效,因为 test() 没有通过引用返回变量。
?>

在 PHP 中声明变量不是必需的,但这是一种非常好的做法。访问未定义的变量将导致 E_WARNING(在 PHP 8.0.0 之前,为 E_NOTICE)。未定义的变量的默认值为 nullisset() 语言结构可用于检测变量是否已初始化。

示例 #3 未初始化变量的默认值

<?php
// 未设置和未引用(不使用上下文)的变量。
var_dump($unset_var);
?>

以上示例会输出:

Warning: Undefined variable $unset_var in ...
NULL

PHP 允许从未定义的变量自动生成数组(自动创建新数组)。 将元素追加到未定义的变量将创建一个新数组,并且不会生成警告。

示例 #4 未定义变量自动生成数组

<?php
$unset_array
[] = 'value'; // 不会生成警告。
?>
警告

当将一个文件包含在另一个使用相同变量名的文件中时,依赖未初始化变量的默认值是有问题的。

可以使用 unset() 语言结构来销毁变量。

有关变量相关函数的信息,请参阅变量函数参考

添加备注

用户贡献的备注 1 note

up
10
anisgazig at gmail dot com
3 years ago
clear concept of variable declaration rules and classification

variable declaration rules:

1.start with dollar sign($)
2.first letter of variable name comes from a-zA-z_
3.next letters of variable name comes from a-zA-Z0-9_
4.no space,no syntex

classification of variables:

Variable are mainly Two types
1.Predefined Variable
2.User Define Variable

Predefined Variable
There are 12 predefined variables in php 8
1.$GLOBALS
2.$_SERVER
3.$_REQUEST
4.$_FILES
5.$_ENV
6.$_SESSION
7.$_COOKIE
8.$_GET
9.$_POST
10.$http_response_header
11.$argc
12.$argv

User Define Variable
User Define variable are 3 types
1.variable scope
2.variable variables
3.reference variable

Variable Scope
variable scope are 3 types
1.local scope
2.global scope
3.static variable
To Top