<?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) {
if (!isset($result[$row['color']])) {
$result[$row['color']] = $row;
} elseif (isset($result[$row['color']]['count'])) {
$result[$row['color']]['size'] = [
[
'value' => $result[$row['color']]['size'],
'count' => $result[$row['color']]['count']
],
[
'value' => $row['size'],
'count' => $row['count']
]
];
unset($result[$row['color']]['count']);
} else {
$result[$row['color']]['size'][] = [
'value' => $row['size'],
'count' => $row['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:
108.41 ms | 408 KiB | 5 Q