Php 如何在for each循环外部显示数组?

Php 如何在for each循环外部显示数组?,php,arrays,shopping-cart,Php,Arrays,Shopping Cart,所以我有一个工作正常的购物车,但是我想在for-each循环之外的联系人表单中显示购物车的结果 我遇到的问题是,每当我尝试显示$Ptitle时,它只会显示购物车中最后添加的内容。不是数组中标题的完整列表。我尝试了各种方法来显示数组结果,但似乎都不起作用。看起来我可以通过 print_r ($contents); 但只在for each循环的内部,而不是外部。 下面是代码,如果很混乱,请道歉。任何帮助都将不胜感激 谢谢大家! function showCart() { global $db; $

所以我有一个工作正常的购物车,但是我想在for-each循环之外的联系人表单中显示购物车的结果

我遇到的问题是,每当我尝试显示$Ptitle时,它只会显示购物车中最后添加的内容。不是数组中标题的完整列表。我尝试了各种方法来显示数组结果,但似乎都不起作用。看起来我可以通过

print_r ($contents);
但只在for each循环的内部,而不是外部。 下面是代码,如果很混乱,请道歉。任何帮助都将不胜感激

谢谢大家!

function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
    $items = explode(',',$cart);
    $contents = array();
    foreach ($items as $item) {
        $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1: 1;

    }
    echo '<form action="http://www.changecompanies.net/dev/theme/cart_checkout.php?action=update" method="post" id="cart">';
    //$output[] = '<table>';
    ?>
    <table id="cart">
                <tr>
                    <th>Quantity</th>
                    <th></th>
                    <th>Item</th>
                    <th>Product Type</th>
                    <th>Unit Price</th>
                    <th>Total</th>
                    <th>Remove</th>
                </tr>
    <?php
    foreach ($contents as $id=>$qty) {



        $sql = 'SELECT * FROM tccproducts WHERE id = '.$id;
        $result = $db->query($sql);
        $row = $result->fetch();
        extract($row);

        $result = mysql_query("SELECT * FROM tccproducts WHERE Pid ='$id'")or die (mysql_error());
        //if (!$result);
        //echo "no result";
        $myrow = mysql_fetch_array($result) or mysql_error('error!');
        $name = $myrow['Ptitle'];
        //$name = substr($name,0,40);
        $Pprice = $myrow['Pprice'];
        $Ptitle = $myrow['Ptitle'];
        $Pimage = $myrow['Pimage'];
        $Pcat = $myrow['Pcategory'];
        $mini = $myrow['Pminimum'];
函数showCart(){
全球$db;
$cart=$\会话['cart'];
如果($cart){
$items=分解(“,”,$cart);
$contents=array();
foreach($items作为$item){
$contents[$item]=(isset($contents[$item])?$contents[$item]+1:1;
}
回声';
//$output[]='';
?>
量
项目
产品类型
单价
全部的
去除

您正在对购物车中的所有项目运行一个循环,获取该项目的详细信息,然后将详细信息存储在各个变量中。在循环的每次迭代中,您以前检索的数据都会被下一行获取的数据覆盖。因此,您只会存储上次获取的项目的数据

如果要存储所有项目数据,则必须将每一行存储在箭头中,然后再输出,或者只在提取时输出每一行

while($row = mysql_fetch(...)) {
     echo <<<EOL
<tr>
    <td>{$quantity}</td>
    <td>{$row['price']}</td>
    etc...
</tr>
EOL;
}
while($row=mysql\u fetch(…)){

echo为什么你不能将数组转储到foreach循环之外?这是我的问题星际…我可以显示数组,但我不知道如何从中获得正确的值…例如,如果每个产品有3个,我可以将它显示为“PID”A9、A9、A9、B12、B12。但是我如何挖掘这些数字并显示乳头le,Price,以及购物车上列出的所有其他邮件信息?我理解你的意思……除了用户“添加”的结果之外到他的cart存储在会话变量cart中。那么为什么我不能引用该变量并再次显示它呢?如果我使用你的解决方案,我会在foreach之外还是仍然在它里面实现?我可以在你的方法Marc上使用一个变体。基本上,创建一个新函数并调用它来重复cart变量es…本质上是一个单独的循环,具有不同的显示方法。效果很好!谢谢。