Значение массива, возвращающее только первый символ и дополнительные значения - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь отобразить начинки для пиццы в корзине. Я сохранил пиццу и топпинги в виде многомерного массива, с этой частью все в порядке, вот пример 1 элемента с 2-мя топпингами с использованием print_r ()

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 * 1 021 * B * 1 022 * 1

И

2 * 1 031 * С
1 * +1033 *

Итак, я знаю, что это возвращает «id» вершины, затем первый символ «des», а затем «qty».

Я хочу, чтобы в моем коде буквально просто отображалось "Des" + разрыв строки, а затем следующая начинка и так далее

для справки, общий выход составляет ;

Специальная пицца
Array ([id] => 1 [des] => Beef [qty] => 1)
1
В
1
Array ([id] => 2 [des] => Chicken [qty] => 1)
2
C
1

И вывод print_r ($ cart) возвращает это ;

Array ([Special Pizza2] => Array ([id] => 22 [name] => Special Pizza [количество] => 1 [des] => [top1] => Array ([id] => 1 [des] => Говядина [кол-во] => 1) [top2] => Массив ([id] => 2 [des] => Цыпленок [кол-во] => 1))

Пожалуйста, скажите мне, где я ошибся, благодарю за помощь!

1 Ответ

0 голосов
/ 10 января 2019

Вам не нужен этот цикл:

    foreach($pizza as $return)
    {
            echo $return[des] .'<br>';
    }

Здесь $pizza на самом деле массив топингов для одного топинга, и вам нужно только описание из него. Однако вы перебираете каждый элемент, а затем пытаетесь отнести его к массиву, а это не так. Так что просто замените приведенный выше код на это:

echo $pizza['des'];

Обратите внимание, индексы массива всегда в кавычках: $pizza['des']

Не делайте этого: $pizza[des]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...