Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在foreach构造PHP中存储和重用每个打印元素的值_Php_Arrays_Foreach - Fatal编程技术网

如何在foreach构造PHP中存储和重用每个打印元素的值

如何在foreach构造PHP中存储和重用每个打印元素的值,php,arrays,foreach,Php,Arrays,Foreach,我目前正在用php编写一个基于文本的游戏,我刚刚遇到了一个我真的很想解决的复杂问题。我试图寻找解决办法,但没有成功。这是我的问题: 我使用foreach打印出数组中元素值大于0的所有项目(我不想显示用户有0个项目) 但我不知道如何使每个数字输入窗口和提交按钮打印唯一(一起),以便当玩家点击“出售”时,其出售正确的项目和正确的数量!现在看来我只能获得玩家想要出售的最后一种元素的数量 所以我的问题是:如何在foreach构造中存储和重用每个打印元素的值? 见下表: if (loggedIn()) {

我目前正在用php编写一个基于文本的游戏,我刚刚遇到了一个我真的很想解决的复杂问题。我试图寻找解决办法,但没有成功。这是我的问题:

我使用foreach打印出数组中元素值大于0的所有项目(我不想显示用户有0个项目)

但我不知道如何使每个数字输入窗口和提交按钮打印唯一(一起),以便当玩家点击“出售”时,其出售正确的项目和正确的数量!现在看来我只能获得玩家想要出售的最后一种元素的数量

所以我的问题是:如何在foreach构造中存储和重用每个打印元素的值?

见下表:

if (loggedIn()) { ?>


<h3><center>Your items</center></h3><hr><br />
<div class=tools>
<table class="inventory">
<?php
foreach (array_slice($items, 2) as $key => $value) {

    if($value>0){

        echo    "<tr><form action='store.php' method='GET'> 
                    <td>".$key."</td>
                    <td>".$value."</td>
                    <td>st</td>
                    <td><input type='number' name='".$key."' value='0'></td>
                    <td><input type='submit' value='sell'></td>
                </form></tr>";
                }
}

  if(isset($_GET['Sell'])){
         echo $_GET[$key];
         // Here i want to decrease the value of given $key
       }

?>
   </table>
</div>
<?php

}else {

header('Location: index.php');

}
if(loggedIn()){?>
您的物品


一种方法是在表格周围放置一个表单,并使用button元素指示正在销售的商品。将提交所有文本输入,但只提交单击的按钮,因此您可以使用该按钮的值来获得正确的文本输入。如下所示:

<form action='store.php' method='GET'>
<table class="inventory">
<?php
foreach (array_slice($items, 2) as $key => $value) {
    if ($value > 0) {
        echo "<tr>
                <td>$key</td>
                <td>$value</td>
                <td>st</td>
                <td><input type='number' name='items[$key]' value='0'></td>
                <td><button type='submit' name='item' value='$key'>sell</button></td>
              </tr>";
    }
}
?>
</table>
</form>
然后用它来得到数量

$number_sold = $_GET['items'][$item_sold];


为此,我建议使用POST而不是GET,因为我假设它会在您的服务器上进行更改。

为什么要为每个表单都构建表单?在循环外部构建表单,只在其中显示表元素,然后在提交时让它确定哪个元素是clicked@clearshot66谢谢你的快速回复!我已经让它工作了在使用switch语句之前,在语句外部有表单的开始和结束标记,但我想缩减代码,现在当我在foreach构造外部有表单时,我得到了这个$u get URL:store.php?Såg=0&Skruvdragare=0&Sandpapper=0&fogmasa=0&Lim=0&Arbetsskor=0&Sell=Sälj&isoling=0&Markduk=0&Våtrumsgips=0
$number_sold = $_GET['items'][$item_sold];