<?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);
preferences:
24.8 ms | 406 KiB | 5 Q