程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php extract()函數把數據中變量轉換成php變量

php extract()函數把數據中變量轉換成php變量

編輯:關於PHP編程

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() 函數將檢查每個鍵名是否為合法的變量名,同時也檢查和符號表中的變量名是否沖突。

對非法、數字和沖突的鍵名的處理將根據此參數決定。可以是以下值之一:

可能的值:

  • EXTR_OVERWRITE - 默認。如果有沖突,則覆蓋已有的變量。
  • EXTR_SKIP - 如果有沖突,不覆蓋已有的變量。(忽略數組中同名的元素)
  • EXTR_PREFIX_SAME - 如果有沖突,在變量名前加上前綴 prefix。自 PHP 4.0.5 起,這也包括了對數字索引的處理。
  • EXTR_PREFIX_ALL - 給所有變量名加上前綴 prefix(第三個參數)。
  • EXTR_PREFIX_INVALID - 僅在非法或數字變量名前加上前綴 prefix。本標記是 PHP 4.0.5 新加的。
  • EXTR_IF_EXISTS - 僅在當前符號表中已有同名變量時,覆蓋它們的值。其它的都不處理。可以用在已經定義了一組合法的變量,然後要從一個數組例如 $_REQUEST 中提取值覆蓋這些變量的場合。本標記是 PHP 4.2.0 新加的。
  • EXTR_PREFIX_IF_EXISTS - 僅在當前符號表中已有同名變量時,建立附加了前綴的變量名,其它的都不處理。本標記是 PHP 4.2.0 新加的。
  • EXTR_REFS - 將變量作為引用提取。這有力地表明了導入的變量仍然引用了 var_array 參數的值。可以單獨使用這個標志或者在 extract_type 中用 OR 與其它任何標志結合使用。本標記是 PHP 4.3.0 新加的。
prefix

可選。請注意 prefix 僅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 時需要。如果附加了前綴後的結果不是合法的變量名,將不會導入到符號表中。

前綴和數組鍵名之間會自動加上一個下劃線。

 

使用全部參數:

 代碼如下 復制代碼