kuchuluk
@kuchuluk

Почему цикл foreach на php на разных итерациях выводит одинаковый товар?

Здравствуйте!
У меня есть массив $orders вот такого вида:
Array
(
    [0] => Array
        (
            [id] => 1
            [date_time] => 2024-01-04 10:51:58
            [phone] => +77053204950
            [delivery_or_pickup] => 1
            [products] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [orders_id] => 1
                            [articul] => 1_30
                            [quantity] => 1
                            [price] => 3200
                            [name] => Пицца 4 сезона
                            [size] => 30
                        )

                    [1] => Array
                        (
                            [id] => 2
                            [orders_id] => 1
                            [articul] => 2_30
                            [quantity] => 1
                            [price] => 3800
                            [name] => Пицца карбонара
                            [size] => 30
                        )

                )

        )

)

И когда я вывожу его с помощью foreach:
foreach ($orders as $order) {
    var_dump($order['products']);
    foreach ($order['products'] as $product) {
        var_dump($product);
    }
}

Первый var_dump($order['products']); выводит на экран так:
array(2) { [0]=> array(7) { ["id"]=> string(1) "1" ["orders_id"]=> string(1) "1" ["articul"]=> string(4) "1_30" ["quantity"]=> string(1) "1" ["price"]=> string(4) "3200" ["name"]=> string(25) "Пицца 4 сезона" ["size"]=> string(2) "30" } [1]=> &array(7) { ["id"]=> string(1) "2" ["orders_id"]=> string(1) "1" ["articul"]=> string(4) "2_30" ["quantity"]=> string(1) "1" ["price"]=> string(4) "3800" ["name"]=> string(29) "Пицца карбонара" ["size"]=> string(2) "30" } }
то есть тут все правильно - два разных продукта.

НО второй var_dump($product); выводит:
array(7) { ["id"]=> string(1) "1" ["orders_id"]=> string(1) "1" ["articul"]=> string(4) "1_30" ["quantity"]=> string(1) "1" ["price"]=> string(4) "3200" ["name"]=> string(25) "Пицца 4 сезона" ["size"]=> string(2) "30" }
array(7) { ["id"]=> string(1) "1" ["orders_id"]=> string(1) "1" ["articul"]=> string(4) "1_30" ["quantity"]=> string(1) "1" ["price"]=> string(4) "3200" ["name"]=> string(25) "Пицца 4 сезона" ["size"]=> string(2) "30" }
То есть два одинаковых продукта!
Как такое возможно?
  • Вопрос задан
  • 255 просмотров
Пригласить эксперта
Ответы на вопрос 1
@snowb
Обратите внимание на второй элемент [1]=> &array
Видимо надо почитать https://www.php.net/manual/en/language.references.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы