PHP extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
将变量从PHP数组导出注册为全局变量,实现键名当作变量名,值作为变量的值,如下
代码如下 | 复制代码 |
$vars = array('var1'=>'1','var2'=>'2','var3'=>'3','var4'=>'4','var5'=>'5'); |
实现通过键名当作变量名的形式访问,如:$var1,$var2
第一种方案:采用PHP内置extract()函数,方法如下
代码如下 | 复制代码 |
extract($vars); |
第二种方案:采用foreach循环数组注册为全局变量,方法如下
代码如下 | 复制代码 |
foreach($vars as $k=>$v){ $GLOBALS[$k] = $v; } |
推荐采用第二种方案,因为extract()函数存在性能和安全问题。
extract() 函数说明
(PHP 3 >= 3.0.7, PHP 4, PHP 5)
extract -- 从数组中将变量导入到当前的符号表
代码如下 | 复制代码 |
int extract ( array var_array [, int extract_type [, string prefix]] ) |
本函数用来将变量从数组中导入到当前的符号表中。接受结合数组 var_array 作为参数并将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,并受到 extract_type 和 prefix 参数的影响。
参考表
参数 | 描述 |
---|---|
array | 必需。规定要使用的输入。 |
extract_rules |
可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中的变量名是否冲突。 对非法、数字和冲突的键名的处理将根据此参数决定。可以是以下值之一: 可能的值:
|
prefix |
可选。请注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。 前缀和数组键名之间会自动加上一个下划线。 |
使用全部参数:
代码如下 | 复制代码 |