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