PHP extract()函数的用法(附带实例)
在 PHP 程序中,extract() 函数能够根据数组成员生成一系列的变量,默认情况下,成员的名称(键)作为变量名,成员的值作为变量的数据,函数会返回生成变量的数量。
extract() 函数的定义如下:
下面的代码演示了一个 extract() 的简单应用。
添加变量名前缀时,还会自动使用下画线(_)连接,下面的代码演示了添加变量名前缀的应用:
下面的代码演示了 EXTR_REFS 标识的应用:
extract() 函数的定义如下:
extract(array &$array[, int $flags = EXTR_OVERWRITE[, string $prefix = NULL]] ) : int
- 参数 $array 指定需要展开的数组;
- 参数 $prefix 指定变量名前缀,默认为空;
- 参数 $flags 决定变量的生成模式,可用的值如下表所示。
值 | 描述 |
---|---|
EXTR_OVERWRITE | 默认值。变量已存在时,使用新的数据覆盖。 |
EXTR_SKIP | 如果有冲突,不覆盖已有的变量。 |
EXTR_PREFIX_SAME | 如果有冲突,在变量名前加上前缀 $prefix。 |
EXTR_PREFIX_ALL | 所有变量名加上前缀 $prefix。 |
EXTR_PREFIX_INVALID | 仅在非法字符或数字的变量名前加上前缀 $prefix。 |
EXTR_IF_EXISTS | 只从数组中提取已存在的变量,并将数组成员的数据赋值到已存在的变量中,其他成员不做处理。 |
EXTR_PREFIX_IF_EXISTS | 与 EXTR_IF_EXISTS 功能相似,只是提取的成员数据不保存到已存在的变量中,而是保存到添加了 $prefix 前缀的变量中。 |
EXTR_REFS | 提取的变量名按引用指向数组成员中的数据,也就是说,修改这些变量的数据时,数组成员的数据也会同步改变。可以使用 | 或 or 运算符与其他标识一起使用。 |
下面的代码演示了一个 extract() 的简单应用。
<?php $arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星"); echo extract($arr),"<br>"; echo $mars; ?>代码首先显示 3,表示生成了 3 个变量。然后显示了 $mars 变量的值“火星”。其他的两个变量分别是 $earth 和 $jupiter。
添加变量名前缀时,还会自动使用下画线(_)连接,下面的代码演示了添加变量名前缀的应用:
<?php $arr = range(1,3); extract($arr,EXTR_PREFIX_ALL,"var"); echo "{$var_0},{$var_1},{$var_2}"; ?>其中,$var_0、$var_1 和 $var_2 就是由 $arr 数组三个成员的数值索引添加var前缀的变量,它们的值分别是 1、2、3。
下面的代码演示了 EXTR_REFS 标识的应用:
<?php $arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星"); extract($arr,EXTR_REFS); print_r($arr); echo "<br>"; $mars="红色星球"; print_r($arr); ?>代码执行结果为:
Array ( [earth] => 地球 [mars] => 火星 [jupiter] => 木星 )
Array ( [earth] => 地球 [mars] => 红色星球 [jupiter] => 木星 )