<?php
$arr = [
[
'Name_Brand' => 'brand_111',
'Name' => 'Name1111'
],
[
'Name_Brand' => 'brand_111',
'Name' => 'Name22222'
],
[
'Name_Brand' => 'brand_111',
'Name' => 'Name3333'
],
[
'Name_Brand' => 'brand_22222',
'Name' => 'Name4444'
],
];
function groupBy(array $data, string $indexKey, ?string $columnName = null): array {
return array_reduce($data, function(array $res, $item) use ($indexKey, $columnName) {
// если не массив или нет искомого значения -- продолжим дальше
if(!\is_array($item) || !isset($item[$indexKey])) {
return $res;
}
$res[$item[$indexKey]][] = ($columnName !== null && isset($item[$columnName]))
? $item[$columnName]
: $item;
return $res;
}, []);
}
var_dump(groupBy($arr, 'Name_Brand', 'Name')); // группирует только нужные данные
//var_dump(groupBy($arr, 'Name_Brand')); // группирует, но в данные попадает весь массив
@maksfedorov