<?php
$array = [
['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]
];
$result = [];
foreach ($array as $row) {
extract($row);
if (!isset($result[$color])) {
$result[$color] = $row;
} elseif (isset($result[$color]['count'])) {
$result[$color]['size'] = [
[
'value' => $result[$color]['size'],
'count' => $result[$color]['count']
],
[
'value' => $size,
'count' => $count
]
];
unset($result[$color]['count']);
} else {
$result[$color]['size'][] = [
'value' => $size,
'count' => $count
];
}
}
echo json_encode(array_values($result), 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:
97.58 ms | 408 KiB | 5 Q