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