Пересобрать массив цикле
есть такой json:
[{ "price":"1", "params":"remove.png", "name":"product1", "count": 1 }, { "price":"2", "params":"remove.png", "name":"product2", "count": 5 }]
Нужно его пересобрать в таком виде (повторяем товар count раз и убираем count и элемента json):
[
{
"price":"1",
"params":"remove.png",
"name":"product1",
},
{
"price":"1",
"params":"remove.png",
"name":"product1",
},
{
"price":"2",
"params":"remove.png",
"name":"product2",
},
{
"price":"2",
"params":"remove.png",
"name":"product2",
}
]
Как это лучше сделать?
Спасибо за помощь!
Ответы (1 шт):
Автор решения: splash58
→ Ссылка
можно воспользоваться array_fill, чтобы создать повторяющиеся массивы
$arr = json_decode($str, true);
$res = [];
foreach($arr as $x) {
$count = $x['count'];
unset($x['count']);
$res = array_merge($res, array_fill(0, $count, $x));
}
echo json_encode($res);
[
{"price":"1","params":"remove.png","name":"product1"},
{"price":"2","params":"remove.png","name":"product2"},
{"price":"2","params":"remove.png","name":"product2"},
{"price":"2","params":"remove.png","name":"product2"},
{"price":"2","params":"remove.png","name":"product2"},
{"price":"2","params":"remove.png","name":"product2"}
]