溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中extract()函數(shù)的作用是什么

發(fā)布時(shí)間:2021-06-30 16:36:55 來源:億速云 閱讀:255 作者:Leah 欄目:編程語(yǔ)言

這篇文章給大家介紹PHP中extract()函數(shù)的作用是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

PHP中extract()函數(shù)有哪些用處

  在action.php中只要使用extract()函數(shù)將$_POST全局?jǐn)?shù)據(jù)解開:

  action.php

  extract($_POST);

  //相當(dāng)于$username=$_POST['username'];

  //$password=$_POST['password'];

  ?>

  是不是很方便呢?呵呵,下面是PHP手冊(cè)里的詳細(xì)解釋:

  extract

  (PHP4,PHP5)

  extract—從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號(hào)表

  說明

  intextract(array$var_array[,int$extract_type[,string$prefix]])

  本函數(shù)用來將變量從數(shù)組中導(dǎo)入到當(dāng)前的符號(hào)表中。接受結(jié)合數(shù)組var_array作為參數(shù)并將鍵名當(dāng)作變量名,值作為變量的值。對(duì)每個(gè)鍵/值對(duì)都會(huì)在當(dāng)前的符號(hào)表中建立變量,并受到extract_type和prefix參數(shù)的影響。

  Note:自版本4.0.5起本函數(shù)返回被提取的變量數(shù)目。

  Note:EXTR_IF_EXISTS和EXTR_PREFIX_IF_EXISTS是版本4.2.0中引進(jìn)的。

  Note:EXTR_REFS是版本4.3.0中引進(jìn)的。

  PHP中extract()函數(shù)有哪些用處

  extract()檢查每個(gè)鍵名看是否可以作為一個(gè)合法的變量名,同時(shí)也檢查和符號(hào)表中已有的變量名的沖突。對(duì)待非法/數(shù)字和沖突的鍵名的方法將根據(jù)extract_type參數(shù)決定??梢允且韵轮抵唬?/p>

  EXTR_OVERWRITE

  如果有沖突,覆蓋已有的變量。

  EXTR_SKIP

  如果有沖突,不覆蓋已有的變量。

  EXTR_PREFIX_SAME

  如果有沖突,在變量名前加上前綴prefix。

  EXTR_PREFIX_ALL

  給所有變量名加上前綴prefix。自PHP4.0.5起這也包括了對(duì)數(shù)字索引的處理。

  EXTR_PREFIX_INVALID

  僅在非法/數(shù)字的變量名前加上前綴prefix。本標(biāo)記是PHP4.0.5新加的。

  EXTR_IF_EXISTS

  僅在當(dāng)前符號(hào)表中已有同名變量時(shí),覆蓋它們的值。其它的都不處理??梢杂迷谝呀?jīng)定義了一組合法的變量,然后要從一個(gè)數(shù)組例如$_REQUEST中提取值覆蓋這些變量的場(chǎng)合。本標(biāo)記是PHP4.2.0新加的。

  EXTR_PREFIX_IF_EXISTS

  僅在當(dāng)前符號(hào)表中已有同名變量時(shí),建立附加了前綴的變量名,其它的都不處理。本標(biāo)記是PHP4.2.0新加的。

  EXTR_REFS

  將變量作為引用提取。這有力地表明了導(dǎo)入的變量仍然引用了var_array參數(shù)的值??梢詥为?dú)使用這個(gè)標(biāo)志或者在extract_type中用OR與其它任何標(biāo)志結(jié)合使用。本標(biāo)記是PHP4.3.0新加的。

  如果沒有指定extract_type,則被假定為EXTR_OVERWRITE。

  注意prefix僅在extract_type的值是EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID或EXTR_PREFIX_IF_EXISTS時(shí)需要。如果附加了前綴后的結(jié)果不是合法的變量名,將不會(huì)導(dǎo)入到符號(hào)表中。前綴和數(shù)組鍵名之間會(huì)自動(dòng)加上一個(gè)下劃線。

  extract()返回成功導(dǎo)入到符號(hào)表中的變量數(shù)目。

  Warning

  不要對(duì)不能信任的數(shù)據(jù)使用extract(),例如用戶的輸入($_GET,…)。如果這樣做,舉例說,要臨時(shí)運(yùn)行依賴于register_globals的老代碼,要確保使用不會(huì)覆蓋的extract_type值,例如EXTR_SKIP,并且要留意應(yīng)該按照php.ini中由variables_order定義的順序來提取。

  extract()的一種可能用法是將wddx_deserialize()返回的結(jié)合數(shù)組中的內(nèi)容導(dǎo)入到符號(hào)表變量中去。

  Example#1extract()例子

  /*假定$var_array是wddx_deserialize返回的數(shù)組*/

  $size=“l(fā)arge”;

  $var_array=array(”color”=>“blue”,

  “size”=>“medium”,

  “shape”=>“sphere”);

  extract($var_array,EXTR_PREFIX_SAME,“wddx”);

  echo“$color,$size,$shape,$wddx_size\n”;

  ?>

  上例將輸出:

  blue,large,sphere,medium

  $size沒有被覆蓋,因?yàn)橹付薊XTR_PREFIX_SAME,這使得$wddx_size被建立。如果指定了EXTR_SKIP,則$wddx_size也不會(huì)被建立。EXTR_OVERWRITE將使$size的值為“medium”,EXTR_PREFIX_ALL將建立新變量$wddx_color,$wddx_size和$wddx_shape。

  必須使用關(guān)聯(lián)數(shù)組,數(shù)字索引的數(shù)組將不會(huì)產(chǎn)生結(jié)果,除非用了EXTR_PREFIX_ALL或者EXTR_PREFIX_INVALID。

關(guān)于PHP中extract()函數(shù)的作用是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI