2017-04-18 104 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! 
}