duanbiaojin8860 2018-08-09 09:59
浏览 22
已采纳

想要回显所有商品名称产品。 只有最后添加的项目才会被回显。 不是全部。

I am coding a shopping cart. This is just part of the code. I want to be able to echo all item names in the cart. Only allows me to echo only the last added item name.

<?php
if(!empty($_SESSION["shopping_cart"]))
{$total = 0;foreach($_SESSION["shopping_cart"] as $keys => $values)
{
?>
<tr>
<td><?php echo $values["item_name"]; ?></td>
<td><?php echo $values["item_quantity"]; ?></td>
<td>$ <?php echo $values["item_price"]; ?></td>
<td>$ <?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
<td><a href="index.php?action=delete&id=<?php echo $values["item_id"]; ?>"><span class="text-danger">Remove</span></a></td>
</tr>
<?php
$total = $total + ($values["item_quantity"] * $values["item_price"]);}
?>
<?php 
echo($values["item_name"]);
?> 
  • 写回答

1条回答 默认 最新

  • douyong1285 2018-08-09 10:01
    关注

    EDIT :

    If you want to echo outside your foreach, you can push your data in an array, and echo after.

    echo don't like array. Use a var_dump or stringify your data.

    <?php
    if(!empty($_SESSION["shopping_cart"])) {
         $total = 0;
         $return = [];
         foreach($_SESSION["shopping_cart"] as $keys => $values) {
     ?>
            <tr>
                <td><?php echo $values["item_name"]; ?></td>
                <td><?php echo $values["item_quantity"]; ?></td>
                <td>$ <?php echo $values["item_price"]; ?></td>
                <td>$ <?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
                <td><a href="index.php?action=delete&id=<?php echo $values["item_id"]; ?>"><span class="text-danger">Remove</span></a></td>
            </tr>
    <?php
            $total = $total + ($values["item_quantity"] * $values["item_price"]); 
            $return[] = $values["item_name"];
        }
    
        var_dump($return);
    ?>
    

    Previous Answer :

    You have to put your echo in your foreach.

    With your echo outside the foreach, $values takes only the last value.

    Like this :

    <?php
    if(!empty($_SESSION["shopping_cart"])) {
         $total = 0;
         foreach($_SESSION["shopping_cart"] as $keys => $values) {
     ?>
            <tr>
                <td><?php echo $values["item_name"]; ?></td>
                <td><?php echo $values["item_quantity"]; ?></td>
                <td>$ <?php echo $values["item_price"]; ?></td>
                <td>$ <?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
                <td><a href="index.php?action=delete&id=<?php echo $values["item_id"]; ?>"><span class="text-danger">Remove</span></a></td>
            </tr>
    <?php
            $total = $total + ($values["item_quantity"] * $values["item_price"]); 
            echo($values["item_name"]);
        }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?