如何访问和打印来自多个关联数组的值?

how to access and print values from multiple associative arrays?

我有 2 个关联数组,“drinks”和“snacks”。 每个都以 dropdown/select 列表的形式显示,一旦做出选择,用户就可以单击提交按钮。这段代码似乎工作正常。 (显示在下方)

// create an an associative array for drinks & snacks
$drinks=array("Water"=>2, "Tea"=>3, "Coffee"=>4);
$snacks=array("Nuts"=>4, "Chips"=>3, "Crackers"=>2);

// initialise variables
$drinksCost = 0;
$snacksCost = 0;
$sum = 0;
?>

<!-- create a dropdown form & submit button -->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="POST">
    <h4>Drinks</h4>     
    <select>
    <?php   
        foreach($drinks as $key => $value) {
            echo '<option value ="'.$key. '">' .$key. '</option>';
        }   
    ?>  
    </select>   

    <h4>Snacks</h4>     
    <select>
    <?php   
        foreach($snacks as $key => $value) {
            echo '<option value ="'.$key. '">' .$key. '</option>';
        }   
    ?>  
    </select>   

    <br><br>
    <input type='submit' name='submit' value='submit'>
</form>

我对下一步有疑问,我需要:

  1. 显示每个数组中的所选项目及其价格(所以我应该有一个饮料项目和一个小吃项目);然后

  2. 将两个价格相加并显示总和。

问题代码在下面,它只是打印出每个项目,然后添加每个数组中最后一个项目的价格。如果有任何帮助,我将不胜感激!

<?php
    if(isset($_POST['submit'])){

        foreach ($drinks as $key => $value){
            $drinksCost = $value;
            echo "<br>Drink order: ".$key .". Cost: $" .$value ."<br>";
        }

        foreach ($snacks as $key => $value){
            $snacksCost = $value;
            echo "<br>Drink order: ".$key .". Cost: $" .$value ."<br>";
        }

        $sum = $drinksCost + $snacksCost;

        echo "<br>Total Cost is: $ " .$sum;
    }
?>
    <?php
$sum = 0;

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

            foreach ($drinks as $key => $value){
                $drinksCost = $value;
$sum += $drinksCost;
                echo "<br>Drink order: ".$key .". Cost: $" .$value ."<br>";
            }

            foreach ($snacks as $key => $value){
                $snacksCost = $value;
$sum += $drinksCost;
                echo "<br>Drink order: ".$key .". Cost: $" .$value ."<br>";
            }

            echo "<br>Total Cost is: $ " .$sum;
        }
    ?>

1) 名称属性必须。除非您的输入值未 post 到目标页面

<select name="drinks">
<?php   
    foreach($drinks as $key => $value) {
        echo '<option value ="'.$key. '">' .$key. '</option>';
    }   
?>  
</select> 

2) 不需要 foreach 只需使用 post 值作为键直接访问值。像这样 $drinks[$_POST['drinks']];

    <?php

    $drinks=array("Water"=>2, "Tea"=>3, "Coffee"=>4);
    $snacks=array("Nuts"=>4, "Chips"=>3, "Crackers"=>2);

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

            $total =0;
            if(isset($_POST['drinks']) && !empty($_POST['drinks'])){

                $drinksCost = $drinks[$_POST['drinks']];

                $total+= $drinksCost;
                echo "<br>Drink order: ".$_POST['drinks'] .". Cost: $" .$_POST['drinks'] ."<br>";
            }

           if(isset($_POST['snacks']) && !empty($_POST['snacks'])){

                $snacksCost = $snacks[$_POST['snacks']];
               $total+= $snacksCost ;
                echo "<br>snacks order: ".$_POST['snacks'] .". Cost: $" .$_POST['snacks'] ."<br>";
            }

            echo "<br>Total Cost is: $ " .$total;
       }

    ?>