您好,登錄后才能下訂單哦!
這篇文章給大家介紹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ò),可以把它分享出去讓更多的人看到。
免責(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)容。