从PHP数组发布多个值

时间:2012-07-28 22:02:15

标签: php arrays forms foreach

我正在编写一个奇幻宠物游戏。目前,我正在开发一种工具来帮助用户管理他们的个人商店库存。该工具包括更改每个项目的销售价格的选项 - 这就是我的问题所在。在这里,让我告诉你:

HTML

<form method="post">
<input type="text" name="cost[$item_id]" value="" />
<input type="submit" name="submit" value="Submit" />
</form>

$ item_id是一个与正在编辑的项目对应的变量。它必须包含在数组中,否则......我不知道哪个价格对应于哪个项目。

此外,这个脚本:

<input type="text" name="cost[$item_id]" value="" />

重复商店库存中的商品数量。因此,表单可以包含无限量的这些条目。因此数组。

脚本

if(isset($_POST['update'])) {

foreach ($_POST['cost'] as $key => $value) {
$submitted_array = array_keys($_POST['cost']); 
echo ($_POST['cost'][$submitted_array[0]] . " " . $submitted_array[0]); 
}

}

上面的脚本有效......但是,它只会打印数组中的第一组数据。

现在,这似乎很好 - 但是,还记得我说我可以拥有无​​限量的成本条目吗?这是我的问题 - 当我使用变量替换上面脚本中的“0”时,该函数会停止一起工作。我可以重复这个函数,如果我知道数组中包含多少条目 - 但我不知道。那我该怎么办?我的问题有一个简单的解决方案吗?

在表单中添加一个隐藏字段,指定要更改的项目数量 - 我只是不知道它是否有用。

如果您希望查看表单的屏幕标题以更好地了解我正在谈论的内容,请询问并收到您的信息!

1 个答案:

答案 0 :(得分:5)

那是因为当你只需要一次时,你会多次重写$submitted_array变量。

if (isset($_POST['update'])) {
    $submitted_array = array_keys($_POST['cost']);
    foreach ($_POST['cost'] as $key => $value) {
        echo ($_POST['cost'][$submitted_array[0]] . " " . $submitted_array[0]);
    }
}

另外,考虑到您的cost数组,您根本不需要使用array_keys

if (isset($_POST['update'])) {
    foreach ($_POST['cost'] as $item_ID => $item_cost) {
        echo ($item_ID . " " . $item_cost);
    }
}