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 参数的影响.
使用全部参数,代码如下:
- <?php
- $a = 'Original';
- $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
- extract($my_array, EXTR_PREFIX_SAME, 'dup');
- echo "$a = $a; $b = $b; $c = $c; $dup_a = $dup_a;";
- ?>
-
- $a = Original; $b = Dog; $c = Horse; $dup_a = Cat;
|