Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅返回第一个字符和额外值的数组值_Php_Arrays_Session_Multidimensional Array - Fatal编程技术网

Php 仅返回第一个字符和额外值的数组值

Php 仅返回第一个字符和额外值的数组值,php,arrays,session,multidimensional-array,Php,Arrays,Session,Multidimensional Array,我想在手推车里展示比萨配料。 我已经将比萨饼和配料存储为多维数组,这部分很好,下面是一个使用print_r()的1个项目和2个配料的示例 我已经在网上和软件上搜索过了,但仍然摸不着头脑 正如您在下面的主代码中所看到的,我在每个浇头上都使用了print_r(),因此我可以检查两个浇头的数组,在我看来,它们的显示与我预期的一样 Array ( [id] => 1 [des] => Beef [qty] => 1 ) 及 代码: $cart = $_SESSION["ca

我想在手推车里展示比萨配料。 我已经将比萨饼和配料存储为多维数组,这部分很好,下面是一个使用print_r()的1个项目和2个配料的示例

我已经在网上和软件上搜索过了,但仍然摸不着头脑

正如您在下面的主代码中所看到的,我在每个浇头上都使用了print_r(),因此我可以检查两个浇头的数组,在我看来,它们的显示与我预期的一样

Array ( [id] => 1 [des] => Beef [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>';
}
$cart=$\u会话[“cart”];
$c=0;
foreach($cart作为$value)
{
如果($c==0){
回声';
$c=1;
}否则{
回声';
$c=0;
}
回显'.$value[name].
'; //因为有11种配料 对于($x=1;$x 1[des]=>牛肉[qty]=>1)
1
B
1
数组([id]=>2[des]=>Chicken[qty]=>1)
2
C
1

print_r($cart)的输出返回这个值

数组([Special Pizza2]=>Array([id]=>22[name]=>Special Pizza[quantity]=>1[des]=>top1]=>Array([id]=>1[des]=>Beef[quantity]=>1[top2]=>Array([id]=>2[des]=>Chicken[quantity]=>1))


请告诉我哪里出了问题,感谢所有的帮助!

您不需要这个循环:

    foreach($pizza as $return)
    {
            echo $return[des] .'<br>';
    }
注意,总是引用这样的数组索引:
$pizza['des']


不要这样做:
$pizza[des]

使用引号-
$value['name']
,而不是
$value[name]
-对所有其他数组元素引用执行相同的操作,例如
$return['des']
$value['des']
好极了,你一针见血!我用以下内容替换了它,删除了额外的循环并添加了一个'if qty>0',这样它就不会无缘无故地给我换行,并且显示得非常完美,谢谢!
code$qty=$pizza['qty'];if($qty>0){echo$pizza['dec'.
';}
谢谢!!无需分配额外变量,只需执行以下操作:
if($pizza['qty']>0){echo$pizza['dec'].
';}
$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>';
}
    foreach($pizza as $return)
    {
            echo $return[des] .'<br>';
    }
echo $pizza['des'];