php - 数组值仅返回第一个字符和额外值

标签 php arrays session multidimensional-array

我正在尝试在购物车中展示披萨配料。 我已将披萨和配料存储为多维数组,这部分很好,这里是使用 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>';
}

现在由于某种原因我的代码正在返回

1
B
1

并且

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
1

print_r($cart) 的输出返回此;

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/

相关文章:

php - Laravel 5 注销或 session 销毁

javascript - 将 jquery 选择器转换为数组

c - 结构体数组

javascript - 将图像集成到 IMDb 中的电影标题建议自动完成

php - 如何从网页中提取有意义有用的内容?

excel - 在 VBA 中使用 xmlHttp 建立 API session

php - 在 Javascript 中解析 PHP session

asp.net - 有没有办法在发出 ASP .NET 请求时扩展类 ASP session ?

javascript - 阻止 jQuery 将整个页面返回到我的 div 中

arrays - 带有闭包属性的结构数组,它将接受和修改 UILabel