1.变量声明
//声明后再初始化
[类型] $变量名;
$变量名 = 值;
//声明时同时初始化
[类型] $变量名 = 值;
2.变量分类
2.1全局变量
名称 | 修饰符 |
全局变量 | —————— |
2.2成员变量
名称 | 修饰符 |
静态属性(类) | static |
实例属性(类) | 至少有一个修饰符 |
2.3局部变量
名称 | 修饰符 |
静态变量(函数内) | static |
局部变量 | —————— |
值形参 | —————— |
默认值形参 | —————— |
引用形参 | & |
剩余数组形参 | ... |
3.可变(Variable)变量名
变量、静态属性、实例属性的名称可以通过返回值为字符串类型的表达式动态指定。
//可变变量名(注意:${$变量名}可省略外围的花括号,简写为$$变量名)
${表达式};
//可变静态属性名(注意:类::${$变量名}可省略外围的花括号,简写为类::$$变量名)
类::${表达式};
//可变实例属性名(注意:$对象->{$变量名}可省略外围的花括号,简写为$对象->$变量名)
$对象->{表达式};
4.赋值方式
4.1按值赋值(assign by value)
当一个变量的值赋予另外一个变量时,更改其中一个变量的值,将不会影响到另外一个变量的值。
4.2按引用赋值(assign by reference)
新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量,更改其中一个变量的值将影响到另外一个变量的值。
使用引用赋值,需要将一个 &
符号加到原始变量前。
$foo = 'Bob'; // 将 'Bob' 赋值给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo
$bar = "My name is $bar"; // 更改 $bar 变量
echo $bar; // My name is Bob
echo $foo; // My name is Bob,$foo 的值也被修改
5.串联赋值
串联赋值操作的顺序是由右到左的。
$b = $a = 5;
//等同于
$a = 5; $b = 5;
6.数组解构(Destructuring)赋值
数组解构(Destructuring)用于在一条语句中实现给一个或多个变量或常量的赋值操作。
6.1右侧为索引数组
//按顺序赋值
$source_array = ['foo', 'bar', 'baz'];
[$foo, $bar, $baz] = $source_array;
echo $foo; //输出:"foo"
echo $bar; //输出:"bar"
echo $baz; //输出:"baz"
//按键赋值
$source_array = ['foo', 'bar', 'baz'];
//将$source_array数组中索引为2对应的值赋值给$baz变量
[2 => $baz] = $source_array;
echo $baz; //输出:"baz"
$source_array = ['foo', 'bar', 'baz'];
//忽略一些元素,将$source_array数组中索引为2对应的值赋值给$baz变量
[, , $baz] = $source_array;
echo $baz; //输出:"baz"
6.2右侧为关联数组
//按键赋值
$source_array = ['foo' => 1, 'bar' => 2, 'baz' => 3];
//将$source_array数组中键为'baz'对应的值赋值给$three变量
['baz' => $three] = $source_array;
echo $three; //输出:3
6.3右侧为多维数组(foreach)
//按顺序赋值
$source_array = [
[1, 'John'],
[2, 'Jane'],
];
foreach ($source_array as [$id, $name]) {
//...
}
6.4...
扩展(spread)运算符
见非运算符相关章节。
7.预定义(Predefine)变量
预定义变量 | 描述 |
$GLOBALS | 引用全局作用域中的变量 |
$_SERVER | 服务器和执行环境信息 |
$_GET | HTTP GET 变量 |
$_POST | HTTP POST 变量 |
$_FILES | HTTP 文件上传变量 |
$_REQUEST | HTTP Request 变量 |
$_SESSION | Session 变量 |
$_ENV | 环境变量 |
$_COOKIE | HTTP Cookies |
$php_errormsg | 前一个错误信息。从 PHP 7.2.0 开始已淘汰,使用 error_get_last() 替代。 |
$http_response_header | HTTP 响应头 |
$argc | 传递给脚本的参数数量 |
$argv | 传递给脚本的参数数组 |
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/28873.html