我正在尝试在购物车中显示比萨饼浇头。 我已经将比萨饼和浇头存储为多维数组,这部分很好,这是使用print_r()
的示例,其中一项包含2种浇头Array ( [Special Pizza2] => Array ( [id] => 22 [name] => Special Pizza [quantity] => 1 [des] => [top1] => Array ( [id] => 1 [des] => Beef [qty] => 1 ) [top2] => Array ( [id] => 2 [des] => Chicken [qty] => 1 ) ) )
我已经在网上和SOF上进行了搜索,但仍然挠头。
正如您将在下面的主要代码中看到的那样,我在每个浇头上都使用了print_r(),因此我可以检查两个浇头的数组,对我来说它们似乎显示出了我所期望的样子;
Array ( [id] => 1 [des] => Beef [qty] => 1 )
AND
Array ( [id] => 2 [des] => Chicken [qty] => 1 )
代码:
$cart = $_SESSION["cart"];
$c = 0;
foreach($cart as $value)
{
if($c==0){
echo '<div class="crtitm" style="background-color:#e6e6e6;">';
$c = 1;
}else{
echo '<div class="crtitm">';
$c = 0;
}
echo '<b>' .$value[name]. '</b><br>';
//11 because there are 11 toppings
for ($x = 1; $x <= 11; $x++) {
$top = "top".$x;
$pizza = $value[$top];
print_r($pizza);
foreach($pizza as $return)
{
echo $return[des] .'<br>';
}
}
echo $value[des] .'<br>';
echo '</div>';
}
现在由于某种原因我的代码正在返回
1
B
1
AND
2
C
1
所以我知道这将返回顶部的“ id”,然后返回“ des”的第一个字符,然后返回“ qty”。
我希望我的代码仅显示“ Des” +换行符,然后显示下一个标题,依此类推
供参考,总输出为;
特色比萨
数组([id] => 1 [des] =>牛肉[qty] => 1)
1
B
1
数组([id] => 2 [des] =>鸡肉[qty] => 1)
2
C
1
print_r($ cart)的输出返回此结果;
Array([Special Pizza2] => Array([id] => 22 [name] => Special Pizza [数量] => 1 [des] => [top1] => Array([id] => 1 [des] =>牛肉[qty] => 1)[top2] =>数组([id] => 2 [des] =>鸡肉[qty] => 1))
请告诉我我哪里出了问题,感谢所有帮助!
答案 0 :(得分:2)
您不需要此循环:
foreach($pizza as $return)
{
echo $return[des] .'<br>';
}
在这里,$pizza
实际上是一个浇头的浇头数组,您只需要其中的描述。但是,您要遍历每个元素,然后尝试将其作为数组来引用-并非如此。因此,只需将上面的代码替换为此:
echo $pizza['des'];
请注意,不要引用这样的引号数组索引:$pizza['des']
不要这样做:$pizza[des]