2017-04-24 59 views
1

我有2個關聯數組,「飲料」和「零食」。 每個都以下拉/選擇列表的形式顯示,一旦選擇完成,用戶單擊提交按鈕。此代碼似乎工作正常。 (下圖所示)如何訪問和打印來自多個關聯數組的值?

// 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; 
    } 
?> 
+0

name屬性是必須 – JYoThI

回答

1

1)名稱屬性必須。除非你的輸入值不發佈到目標頁面

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

2)無需直接的foreach使用後的值剛剛訪問值作爲重點。像這種$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; 
     } 

    ?> 
+0

謝謝!這有效......但在echo聲明中,我不得不插入$ drinkCost(與零食相同),如下所示:echo「
飲料訂單:」。$ _ POST ['drinks']。「。Cost:$」。$ drinksCost。「
」; – jeronnimmo

+0

改變這個變量echo「
點心順序:」。$ _ POST ['snacks']。「。$。」$ snacksCost。「
」; – JYoThI

0
<?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; 
     } 
    ?>