本文章詳細的介紹了關于PHP中extract函數各種用法介紹,從把數據變成變量,post,get數據處理等有需要的同學可參考一下.
直接上代碼,代碼如下:
- <?php
- $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
- extract($my_array);
- echo "$a = $a; $b = $b; $c = $c";
- ?>
- //輸出:$a = Cat; $b = Dog; $c = Horse
沒有定義變量$a $b $c,也沒有賦值,為什么就可以可以獲取值了?
比方說,可以很方便的提取$_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
- /* 假定 $var_array 是 wddx_deserialize 返回的數組*/
- $size = "large";
- $var_array = array("color" => "blue",
- "size" => "medium",
- "shape" => "sphere");
- extract($var_array, EXTR_PREFIX_SAME, "wddx");
- echo "$color, $size, $shape, $wddx_sizen";
- ?>
- //上例將輸出:blue, large, sphere, medium
$size 沒有被覆蓋,因為指定了 EXTR_PREFIX_SAME,這使得 $wddx_size 被建立,如果指定了 EXTR_SKIP,則 $wddx_size 也不會被建立,EXTR_OVERWRITE 將使 $size 的值為“medium”,EXTR_PREFIX_ALL 將建立新變量 $wddx_color,$wddx_size 和 $wddx_shape.
數組2
1.適用范圍:非數字索引的數組,數組中有鍵值對;
2.函數創建的變量名是數組中的關鍵字,變量的值是數組中對應的值;
3.兩個可選參數:extract_type和prefix;
其中extract_type指定處理變量名沖突的方法,默認是EXTR_OVERWRITE,表示覆蓋已有的變量,當extract_type的值為EXTR_PREFIX_ALL時,給所有創建的變量前加上前綴,前綴為prefix參數提供;
4.數組中元素的關鍵字必須是有效的變量名,否則將被跳過.
實例,array_extract.php,代碼如下:
- <html>
- <head>
- <title>Test Array Extract</title>
- </head>
- <body>
- <?php
- $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
- extract($array);
- echo 'Default:<br />';
- echo "$key1 $key2 $key3<br />";
- //發生沖突時跳過一個元素
- $key1 = "abc";
- extract($array, EXTR_SKIP);
- echo 'Skip:<br />';
- echo "$key1 $key2 $key3<br />";
- //在所有變量名前加上由prefix參數提供的值
- extract($array, EXTR_PREFIX_ALL, 'my');
- echo 'Prefix_All:<br />';
- echo "$my_key1 $my_key2 $my_key3<br />";
- ?>
- </body>
- </html>
是不是很方便呢?
新聞熱點
疑難解答