2017-04-18 19 views
0

我有一個提交給另一頁的php html表單,這個頁面提交了大量的post變量數據。我知道我可以通過定義一個局部變量$ data1 = $ POST [「data1」}將每個發佈的變量轉換爲局部變量。但我想避免這種情況,因爲有很多變量。PHP post數據轉換爲局部變量

這是post變量的示例轉儲。

array(59) { ["manufacturer"]=> string(10) "Dell Inc. " ["systype"]=> string(11) "Space-aving" ["model"]=> string(15) "OptiPlex GX520 " ["serial"]=> string(7) "GVHNT1J" ["boardserial"]=> string(17) "..CN6986156K0B61." ["proc_vendor"]=> string(5) "Intel" ["proc_type"]=> string(15) "Central Proceor" ["proc_family"]=> string(9) "Pentium 4" ["proc_cores"]=> string(0) "" ["proc_core_enabled"]=> string(0) "" ["proc_thread_count"]=> string(0) "" ["proc_external_clock"]=> string(7) "800 MHz" ["proc_max_speed"]=> string(8) "4000 MHz" ["proc_speed"]=> string(8) "2800 MHz" ["proc_socket"]=> string(10) "ZIF Socket" ["proc_charateristic"]=> string(0) "" ["proc_cache"]=> string(7) "1024 kB" ["ram"]=> string(4) "3GiB" ["ram_type"]=> string(3) "DDR" ["on_board_device1"]=> string(35) "Intel Graphic Media Accelerator 950" ["on_board_device2"]=> string(42) "Broadcom 5751 NetXtreme Gigabit Controller" ["on_board_device3"]=> string(21) "AC97 Audio Controller" ["on_board_device4"]=> string(4) "None" ["on_board_device5"]=> string(4) "None" ["port_connector1"]=> string(10) "Audio Port" ["port_connector2"]=> string(12) "Network Port" ["port_connector3"]=> string(17) "Parallel Port PS2" ["port_connector4"]=> string(29) "Serial Port 16550A Compatible" ["port_connector5"]=> string(3) "USB" ["port_connector6"]=> string(10) "Video Port" ["port_connector7"]=> string(4) "None" ["port_connector8"]=> string(4) "None" ["storage_controller1"]=> string(58) "Intel Corporation 82801G ICH7 Family IDE Controller rev 01" ["storage_controller2"]=> string(67) "Intel Corporation NM10ICH7 Family SATA Controller [IDE mode] rev 01" ["hard_disk1"]=> string(4) "40GB" ["hard_disk2"]=> string(4) "None" ["hard_disk3"]=> string(4) "None" ["hard_disk4"]=> string(4) "None" ["optic_drive"]=> string(6) "CD-ROM" ["display"]=> string(63) "Intel Corporation 82945GGZ Integrated Graphic Controller rev 02" ["network"]=> string(44) "NetXtreme BCM5751 Gigabit Ethernet PCI Expre" ["wirelessnetwork"]=> string(4) "None" ["multimedia"]=> string(40) "82801G ICH7 Family AC97 Audio Controller" ["camera1"]=> string(4) "None" ["date"]=> string(10) "2017-02-09" ["stime"]=> string(8) "17:35:23" ["grade"]=> string(1) "A" ["uuid"]=> string(36) "44454C4C-5600-1048-804E-C7C04F54314A" ["asset_tag"]=> string(4) "None" ["pwr_on_pwd"]=> string(7) "Enabled" ["key_pwd"]=> string(15) "Not Implemented" ["admin_pwd"]=> string(7) "Enabled" ["front_panel_reset"]=> string(15) "Not Implemented" ["customer"]=> string(9) "Cutomer-A" ["batch"]=> string(14) "Batch-03948383" ["origin"]=> string(8) "Autralia" ["custref"]=> string(6) "Au_cut" ["ourref"]=> string(10) "no_comment" ["comments"]=> string(11) "our_comment" } 

我很高興使用在發佈數據中傳遞的變量名稱。先謝謝你。

+0

爲什麼cr當你可以引用數組中的值時,可以使用變量來引用每個值? –

回答

-1

使用$ _POST全局變量並獲取使用鍵值對提交的所有值。

foreach ($_POST as $key => $value){ 
    $$key=$value; 
} 
+0

這不回答這個問題。 –

2

這是一個可怕的想法,但如果你絕對必須,您可以使用extract()功能如下:

$array = array(
    'foo' => 'bar', 
    'bar' => 'baz' 
); 

extract($array); 

echo $foo; // 'bar' 
echo $bar; // 'baz' 

詳情請參閱http://php.net/extract

+0

爲什麼這是一個可怕的想法的例子:http://stackoverflow.com/questions/829407/what-is-so-wrong-with-extract –

+0

我試過這個,但不適合我。我知道這是一個可怕的想法,但它最適合我的需求。我嘗試過,但我得到HTML 500錯誤。 $ array =($ _POST);提取物($陣列);回聲「這是製造商」$製造商; – user2107349

+0

然後你做了其他錯誤:-)檢查你的錯誤日誌,看看PHP拋出了什麼錯誤,這導致Apache給你一個500錯誤。 – rickdenhaan

0

您可以通過_POST的$與$$循環:

foreach($_POST as $variable => $value) 
    $$variable = $value; 

然後,如果你做了var_dump($manufacturer)

string(10) "Dell Inc. " 
0

從@rickdenhaan答案是這樣做的最好的一個,但有另一種方式做,它不是一個好主意,當然不是漂亮:

foreach ($_POST as $key => $value) { 
    $$key = $value; // yes, a double $$ - not pretty and a pain to debug! 
}