1.6PHP语言的变量(Variable)

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服务器和执行环境信息
$_GETHTTP GET 变量
$_POSTHTTP POST 变量
$_FILESHTTP 文件上传变量
$_REQUESTHTTP Request 变量
$_SESSIONSession 变量
$_ENV环境变量
$_COOKIEHTTP Cookies
$php_errormsg前一个错误信息。从 PHP 7.2.0 开始已淘汰,使用 error_get_last() 替代。
$http_response_headerHTTP 响应头
$argc传递给脚本的参数数量
$argv传递给脚本的参数数组

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/28873.html

(0)
上一篇 2023年6月5日
下一篇 2023年6月7日

相关推荐

  • 2.5PHP类型之接口(Interface)

    1.接口声明 接口体中可以包含静态方法、实例方法、构造函数(不推荐)、析构函数(不推荐)、魔术方法、类常量。 接口中的所有方法只可以定义方法签名,不可以定义方法的具体实现。 接口可以继承,但不可以实例化。 注意:接口中的所有方法与抽象方法的语法不同,接口中的所有方法不可以添加 abstract 关键字。 注意:接口中的…

    PHP语言教程 2023年7月5日
    0230
  • 1.9PHP语言的表达式(Expression)

    在 PHP 语言中,几乎所写的任何东西都是表达式。 1.declare语言结构 declare 语言结构用来为一段代码块设定执行指令(directive)。 目前只支持三个指令(directive):ticks 指令、encoding 指令、strict_types 指令。 代码块中的语句…

    PHP语言教程 2023年6月9日
    0190
  • 2.10PHP语言的特性(Attribute)类

    1.特性(Attribute)类声明 声明一个特性类,首先从全局命名空间 use 导入 #[Attribute] 特性,然后在普通类声明上添加 #[Attribute] 特性以表示此类为特性类。 特性目标 描述 Attribute::TARGET_ALL 不限制用于具体哪一个。 Attribute::TARGET_CL…

    PHP语言教程 2023年7月10日
    0200

发表回复

登录后才能评论