<?php
$input = [['color'=>'#000000','size'=>'L','count'=>2],
['color'=>'#000000','size'=>'XL','count'=>1],
['color'=>'#ffffff','size'=>'L','count'=>2],
['color'=>'#ffffff','size'=>'XL','count'=>1],
['color'=>'#ff0000','size'=>'L','count'=>1]];
$colors = [];
foreach ($input as $product) {
extract($product);
$colors[$color][$size] = $count;
}
$output = [];
foreach ($colors as $color => $sizes) {
$data = [];
foreach ($sizes as $size => $count) {
$data[] = ['value' => $size,
'count' => $count];
}
if (count($data) == 1) {
$output[] = ['color' => $color,
'size' => $data[0]['value'],
'count' => $data[0]['count']];
} else {
$output[] = ['color' => $color,
'size' => $data];
}
}
echo json_encode($output, JSON_PRETTY_PRINT);
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- [
{
"color": "#000000",
"size": [
{
"value": "L",
"count": 2
},
{
"value": "XL",
"count": 1
}
]
},
{
"color": "#ffffff",
"size": [
{
"value": "L",
"count": 2
},
{
"value": "XL",
"count": 1
}
]
},
{
"color": "#ff0000",
"size": "L",
"count": 1
}
]
preferences:
110.05 ms | 408 KiB | 5 Q