PHP посмотреть через массив JSON изменить специальное значение и вернуть массив - PullRequest
0 голосов
/ 10 января 2019

Итак, у меня есть массив JSON с некоторым содержимым в массиве. у каждого товара есть идентификатор продукта и цена, моя цель - пройти через этот массив и изменить цену товара и массив возврата с измененной ценой товара.

вот фрагмент массива json в результате /

"variation_combination_price" => array:4 [▼
0 => array:10 [▼
  "id" => 1
  "product_id" => 1364
  "cost_price" => 600
  "promo_price" => 900
  "price" => 900
  "combination_array" => array:2 [▼
    0 => array:8 [▶]
    1 => array:8 [▶]
  ]
  "combination_array_string" => "{"1":"3","2":"4"}"
  "quantity" => 10000
  "status" => 1
  "DOCUMENTATION" => array:2 [▶]
]
1 => array:10 [▶]
2 => array:10 [▶]
3 => array:10 [▶]

Таким образом, приведенный выше результат является исходным ответом. Как вы видите, у нас есть 4 предмета, цель состоит в том, чтобы зациклить их, изменить цену и вернуть те же 4 предмета.

  foreach ($product_data['variation_combination_price'] as  
  $variation_combination_price){

        $variation_combination_price['price'] = 666;

        $product_data['variation_combination_price'] = 
$variation_combination_price;

    }


    dd($product_data['variation_combination_price']);  

Мой результат должен быть с тем же массивом, где изменена цена.

"variation_combination_price" => array:4 [▼
0 => array:10 [▼
  "id" => 1
  "product_id" => 1364
  "cost_price" => 600
  "promo_price" => 900
  "price" => 666
  "combination_array" => array:2 [▼
    0 => array:8 [▶]
    1 => array:8 [▶]
  ]
  "combination_array_string" => "{"1":"3","2":"4"}"
  "quantity" => 10000
  "status" => 1
  "DOCUMENTATION" => array:2 [▶]
]
1 => array:10 [▶]
2 => array:10 [▶]
3 => array:10 [▶]

1 Ответ

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

Вы не зацикливаетесь по ссылке.
Какие бы изменения вы ни делали в цикле, это не изменит значение массива.
Для этого нужно добавить &

foreach ($product_data['variation_combination_price'] as &$variation_combination_price){
    $variation_combination_price['price'] = 666;
}

Только не забудьте также сбросить переменную после цикла.

unset($variation_combination_price);

Чтобы убедиться, что вы не измените данные массива после завершения цикла.

...