直接上代码:
代码如下 复制代码
cat,b => dog, c => horse);
extract($my_array);
echo $a = $a; $b = $b; $c = $c;
?>
猜猜会会出现什么结果?
输出:
代码如下 复制代码
$a = cat; $b = dog; $c = horse
没有定义变量$a $b $c ,也没有赋值,为什么就可以可以获取值了?
比方说,可以很方便的提取$_post或者$_get的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:
form.html
代码如下 复制代码
在action.php中只要使用extract()函数将$_post全局数据解开:
action.php
代码如下 复制代码
数组操作
相关例子:
代码如下 复制代码
blue,
size => medium,
shape => sphere);
extract($var_array, extr_prefix_same, wddx);
echo $color, $size, $shape, $wddx_sizen;
?>
上例将输出:
blue, large, sphere, medium
$size 没有被覆盖,因为指定了 extr_prefix_same,这使得 $wddx_size 被建立。如果指定了 extr_skip,则 $wddx_size 也不会被建立。extr_overwrite 将使 $size 的值为“medium”,extr_prefix_all 将建立新变量 $wddx_color,$wddx_size 和 $wddx_shape。
数组2
.适用范围:非数字索引的数组,数组中有键值对;
2.函数创建的变量名是数组中的关键字,变量的值是数组中对应的值;
3.两个可选参数:extract_type和prefix;
其中extract_type指定处理变量名冲突的方法,默认是extr_overwrite,表示覆盖已有的变量,
当extract_type的值为extr_prefix_all时,给所有创建的变量前加上前缀,前缀为prefix参数提供;
4.数组中元素的关键字必须是有效的变量名,否则将被跳过。
实例:
array_extract.php:
代码如下 复制代码
test array extract
'value1', 'key2' => 'value2', 'key3' => 'value3');
extract($array);
echo 'default:
';
echo $key1 $key2 $key3
;
//发生冲突时跳过一个元素
$key1 = abc;
extract($array, extr_skip);
echo 'skip:
';
echo $key1 $key2 $key3
; //在所有变量名前加上由prefix参数提供的值
extract($array, extr_prefix_all, 'my');
echo 'prefix_all:
';
echo $my_key1 $my_key2 $my_key3
;
?>
是不是很方便呢?
关于此函数用介绍可参考http://www.111cn.net/phper/24/04ef3db43c8278b93cdd9203999b8352.htm
