我需要帮助组合我使用POST请求的数组。
html& php的形式:
<form method="POST" action="editservice2.php?id=<?=$id;?>">
<?php
while ($geti = mysql_fetch_assoc($getitems)) {
?>
<input type="hidden" name="itemid[]" value="<?=$geti["id"];?>">
<input type="text" placeholder="Item name" value="<?=$geti["name"];?>" name="itemname[]">
<input type="text" style="width:40px;" placeholder="Item price" value="<?=$geti["price"];?>" name="itemprice[]"><br>
<input type="text" placeholder="Item description" value="<?=$geti["description"];?>" name="itemdesc[]"><br>
<input type="text" placeholder="Item image url" value="<?=$geti["imgurl"];?>" name="itemurl[]"><br>
<input type="text" placeholder="Item command" value="<?=$geti["command"];?>" name="itemcmd[]"><br><br>
<?php
}
?>
<input type="submit" name="submit" value="Configure items">
</form>
提交后和PHP:
foreach (array_combine($_POST["itemname"], $_POST["itemprice"]) as $itemname => $itemprice) {
echo "Itemname: ".$itemname."<br>";
echo "Itemprice: ".$itemprice."<br><br>";
}
但是,上述代码仅适用于论坛中的2个不同值,如何才能使其适用于我获得的所有6个表单?
答案 0 :(得分:0)
您可以使用array_merge。 有关完整参考和示例,请访问http://www.w3schools.com/php/func_array_merge.asp 告诉我你的问题是否解决了。
答案 1 :(得分:0)
$a1 = array('one'=>'TheOne');
$a2 = array('two'=>'TheTwo');
$a34 = array('three'=>'TheThree', 'four'=>'TheFour');
$a = $a1 + $a2 + $a34;
print_r($a);
结果:
Array
(
[one] => TheOne
[two] => TheTwo
[three] => TheThree
[four] => TheFour
)
所以,你可以使用
foreach($a1+$a2+$a34 as $key => $value)
{
echo $key . ' = ' . $value . "<br />";
}
结果:
one = TheOne
two = TheTwo
three = TheThree
four = TheFour
答案 2 :(得分:0)
你不应该在循环它的同时声明你的数组,尝试将你的代码更改为:
$item_names = array_combine($_POST["itemname"], $_POST["itemprice"]);
foreach ($item_names as $itemname => $itemprice) {
echo "Itemname: ".$itemname."<br>";
echo "Itemprice: ".$itemprice."<br><br>";
}
但是,我会以不同的方式设置此表单。像这样:
<input type="hidden" name="items[<?=$geti["id"];?>][id]" value="<?=$geti["id"];?>">
<input type="text" placeholder="Item name" value="<?=$geti["name"];?>" name="items[<?=$geti["id"];?>][name]">
<input type="text" style="width:40px;" placeholder="Item price" value="<?=$geti["price"];?>" name="items[<?=$geti["id"];?>][price]"><br>
<input type="text" placeholder="Item description" value="<?=$geti["description"];?>" name="items[<?=$geti["id"];?>][desc]"><br>
<input type="text" placeholder="Item image url" value="<?=$geti["imgurl"];?>" name="items[<?=$geti["id"];?>][url]"><br>
<input type="text" placeholder="Item command" value="<?=$geti["command"];?>" name="items[<?=$geti["id"];?>][cmd]"><br><br>
然后在你的处理程序中执行以下操作:
$items = $_POST['items'];
foreach($items as $data){
echo "Item ID: ".$data['id']."<br>";
echo "Item Name: ".$data['name']."<br>";
echo "Item Price: ".$data['price']."<br>";
echo "Item Desc: ".$data['desc']."<br>";
echo "Item IMG: ".$data['imgurl']."<br>";
echo "Item CMD: ".$data['cmd']."<br><br>";
}
我还建议重构代码以提高可读性。希望这有帮助!
答案 3 :(得分:0)
这是一种更健壮的方式,因为它不依赖于浏览器将密钥值对发送到服务器的顺序。此外,如果你引入了像复选框这样的可选字段,它将正常工作,浏览器在没有“检查”时不会发送名称/值,这将破坏你的索引方案。缩写示例:
<input name="item[0][name]">
<input name="item[0][description]">
<input name="item[0][price]">
<input name="item[1][name]">
<input name="item[1][description]">
<input name="item[1][price]">
<input name="item[2][name]">
<input name="item[2][description]">
<input name="item[2][price]">
然后
foreach ($_POST['items'] as $id => $associated_data) {
echo $id, $associated_data['name'], $associated_data['price'], '...';
}