background image

分析如何巧用 php extract()函数

近日在看一个牛人的代码时,看到一个非常好用的函数:php extract,它的主要作用是将
数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方
便的工具,比方说,可以很方便的提取$_POST 或者$_GET 的元素,对表单提交上来的内
容不能不用一一赋值,直接使用下面代码:
form.html 代码如下:
<form action="action.php" method="post"> 
<input type="text" name="username"> 
<input type="password" name="password"> 
<input type="submit">
在 action.php 中只要使用 extract()函数将$_POST 全局数据解开:
action.php 代码如下:
<?php 
extract($_POST); 
//相当于$username = $_POST['username']; 
//$password = $_POST['password']; 
?>
是不是很方便呢?呵呵,下面是 PHP 手册里的详细解释:

extract
(PHP 4, PHP 5)

extract — 从数组中将变量导入到当前的符号表

说明
int extract ( array $var_array [, int $extract_type [, string $prefix ]] )

 

本函数用来将变量从数组中导入到当前的符号表中。接受结合数组 var_array 作为参数并
将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,

 

并受到 extract_type   

和 prefix 参数的影响。

Note: 

 

自版本 4.0.5 起本函数返回被提取的变量数目。

Note: EXTR_IF_EXISTS 

 

和 EXTR_PREFIX_IF_EXISTS 

 

是版本 4.2.0 中引进的。

Note: EXTR_REFS 

 

是版本 4.3.0 中引进的。

extract() 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的

 

变量名的冲突。对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。可以是
以下值之一: