PHP extract函數的作用是:函數從數組中把變數匯入到當前的符號表中。對於數組中的每個元素,鍵名用於變數名,索引值用於變數值。用extract函數一個技巧是可以把欄位變成變數,方便調用。
$info = $this->db->get_one(array('id'=>$specialid, 'disabled'=>0));
//將當前專題id所對應的欄位作為變數匯入到當前的符號表
extract($info);
本例$info是從資料庫查出的結果,以數組的形式作為變數,鍵名是欄位名,值是欄位值,使用extract函數就把鍵名作為變數名,欄位值作為變數值了。
比如array(‘name’=>’zhangsan’,’sex’=>’man’,’id’=>3232);
那麼extract($array)後,就可以直接使用$name,$sex,$id了。
再看
<?php
$size = "old size"; //注意最後size變數的值。
$a = array(
"color" => "red",
"size" => "XXL",
"price" => "53");
extract($a);
echo "color = $color<br />";
echo "size = $size<br />";
echo "price = $price<br />";
?>
結果為:
color = red
size = XXL
price = 53
通過上例發現$size的值為XXL,而不是之前的”old size”,說明預設情況下當數組中的key與已有的變數衝突時,將覆蓋原來的變數。
例子
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'];
?>
是不是很方便呢?
extract的作用分析
addslashes -- 使用反斜線引用字串
extract(addslashes($_POST)); --處理POST表單
把用戶端<FORM METHOD="POST"...>表單中的變數名取出來。
extract(addslashes($_GET)); --處理GET表單
把用戶端<FORM METHOD="GET"...>表單中的變數名取出來。