2

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

的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”时,该函数停止一起工作。如果我知道数组总共包含多少个条目,我可以重复这个函数——但我不知道。那么我能做什么呢?我的问题有简单的解决方案吗?

可以在表单中添加一个隐藏字段来指定要更改的项目数量 - 我只是不知道这是否会有所帮助。

如果您想查看表格的屏幕标题以更好地理解我在说什么,只要问,您就会收到!

4

1 回答 1

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);
    }
}
于 2012-07-28T22:05:16.287 回答