PHP / MySQL - создание многомерного массива

Это мой фрагмент кода:

<?php
if ($result->num_rows > 0) {
    $total                = 0; // used for displaying the total price at the bottom
    $_SESSION['foodname'] = array();
    while ($row = $result->fetch_assoc()) {
?>
               <tbody>
                    <tr>
                        <td data-th = "Product">
                            <div class = "row">
                                <div class = "col-sm-2 hidden-xs"><br><img src = "../images/food/<?php
        echo $row['food_img'];
?>" alt = "" class = "img-responsive" width = "100%"/></div>
                                <div class = "col-sm-10">
                                    <h4 style = "margin-left:20px;"><br><?php
        echo $row['food_name'];
?></h4>
                                </div>
                            </div>
                        </td>
                        <td data-th = "Price"><br>Rs. <?php
        $price = $row['price'];
        echo $price;
?></td>
                           <form action = "" method = "POST">
                                <td data-th = "Quantity"><br>
                                    <input type = "number" name = "quantity" class = "form-control text-center" value = "<?php
        $fquantity = $row['food_quantity'];
        echo $fquantity;
?>" min = "1" max = "<?php
        echo $row['quantity'];
?>">
                                </td>
                                <td data-th = "Subtotal" class = "text-center"><?php
        $sub_total = ($price * $fquantity);
        echo '<br>$ ' . $sub_total;
        $total = $total + $sub_total;
?>
                               </td>
                                <td class = "actions">
                                        <br><input type = "submit" class = "btn btn-info btn-sm" value = "Update Quantity" name = "update">
                                    <a class = "btn btn-danger btn-sm" href = "../CRUD/delete.php?id=<?php
        echo $row['food_id'];
?>&q=<?php
        echo $fquantity;
?>">Remove Item</a>
                                </td>
                            </form>
                    </tr>
                </tbody>
<?php
        $_SESSION['foodname'] = array(
            "name" => $row['food_name'],
            "price" => $row['price']
        );
    }
    print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>

Как вы можете ясно видеть, следующая строка кода написана внутри цикла while, однако я могу видеть только подробности о последнем элементе данных.

$_SESSION['foodname'] = array("name" => $row['food_name'], "price" => $row['price']);

Есть ли что-то, что я делаю в корне неправильно?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
34
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема заключается в том, как вы устанавливаете $_SESSION внутри цикла. Вы переопределяете каждый раз, когда выполняется цикл. Сделайте их массивом, и это должно сработать:

//-------------------▾▾
$_SESSION['foodname'][] = array(
    "name" => $row['food_name'],
    "price" => $row['price']
);

Обратите внимание на [] после $_SESSION['foodname'].

Измените эту часть кода

<?php
        $_SESSION['foodname'] = array(
            "name" => $row['food_name'],
            "price" => $row['price']
        );
    }
    print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>

с этим

<?php
        $food = array(
            "name" => $row['food_name'],
            "price" => $row['price']
        );
        array_push($_SESSION['foodname'],$food);
    }
    print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>

Другие вопросы по теме