我正在尝试在购物车中展示披萨配料。 我已将披萨和配料存储为多维数组,这部分很好,这里是使用 print_r() 的 1 个项目和 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(),这样我就可以检查 2 个配料的数组,对我来说,它们似乎按我的预期显示;
Array ( [id] => 1 [des] => Beef [qty] => 1 )
并且
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>';
}
现在由于某种原因我的代码正在返回
block 引用>1
B
1并且
block 引用>2
C
1所以我知道这是返回配料的“id”,然后是“des”的第一个字符,然后是“qty”。
我希望我的代码只显示“Des”+换行符,然后显示下一个顶部,依此类推
for reference, the total output is;
Special Pizza
Array ( [id] => 1 [des] => Beef [qty] => 1 )
1
B
1
Array ( [id] => 2 [des] => Chicken [qty] => 1 )
2
C
1print_r($cart) 的输出返回此;
block 引用>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 ) )
请告诉我哪里出了问题,感谢所有的帮助!
最佳答案
你不需要这个循环:
foreach($pizza as $return)
{
echo $return[des] .'<br>';
}
这里,$pizza
实际上是一个用于一种配料的配料数组,您只需要其中的描述。但是,您要循环遍历每个元素,然后尝试将其作为数组进行引用 - 但事实并非如此。因此只需将上面的代码替换为:
echo $pizza['des'];
注意,aways 引用数组索引,如下所示:$pizza['des']
不要这样做:$pizza[des]
关于php - 数组值仅返回第一个字符和额外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133111/