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

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

问题描述:

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"]);
?> 

我正在编写购物车。 这只是代码的一部分。 我希望能够回显购物车中的所有商品名称。 只允许我回显最后添加的项目名称。 p>

 &lt;?php 
if(!empty($ _ SESSION [“shopping_cart”]))
 {$ total = 0; foreach($ _ SESSION [“shopping_cart”] 如$ keys =&gt; $ values)
 {
?&gt; 
&lt; tr&gt; 
&lt; td&gt;&lt;?php echo $ values [“item_name”];  ?&gt;&lt; / td&gt; 
&lt; td&gt;&lt;?php echo $ values [“item_quantity”];  ?&gt;&lt; / td&gt; 
&lt; td&gt; $&lt;?php echo $ values [“item_price”];  ?&gt;&lt; / td&gt; 
&lt; td&gt; $&lt;?php echo number_format($ values [“item_quantity”] * $ values [“item_price”],2);?&gt;&lt; / td&gt; 
&lt;  ; td&gt;&lt; a href =“index.php?action = delete&amp; id =&lt;?php echo $ values [”item_id“];?&gt;”&gt;&lt; span class =“text-danger”&gt; 删除&lt; / span&gt;&lt; / a&gt;&lt; / td&gt; 
&lt; / tr&gt; 
&lt;?php 
 $ total = $ total +($ values [“item_quantity”] * $ values [“item_price”]  );} 
?&gt; 
&lt;?php 
echo($ values [“item_name”]); 
?&gt;  
  code>  pre> 
  div>

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"]);
    }
?>