fork download
  1. <?php
  2.  
  3.  
  4.  
  5. $result['ITEMS'][0] =
  6. [
  7. 'ID' => 222,
  8. 'SORT' => 300,
  9. 'NAME' => 'NAME_1',
  10. 'GROUPS' => 21236
  11. ];
  12.  
  13. $result['ITEMS'][1] =
  14. [
  15. 'ID' => 333,
  16. 'SORT' => 300,
  17. 'NAME' => 'NAME_2',
  18. 'GROUPS' => 3213
  19. ];
  20.  
  21. $result['ITEMS'][2] =
  22. [
  23. 'ID' => 333,
  24. 'SORT' => 300,
  25. 'NAME' => 'NAME_2',
  26. 'GROUPS' => 21236
  27. ];
  28.  
  29.  
  30. $myFunc = function($acc, $item) {
  31. if (empty($acc[$item['ID']])) {
  32. $acc[$item['ID']] = $item;
  33. $acc[$item['ID']]['GROUPS'] = [$item['GROUPS']];
  34. } elseif (!in_array($item['GROUPS'], $acc[$item['ID']]['GROUPS'])) {
  35. $acc[$item['ID']]['GROUPS'][] = $item['GROUPS'];
  36. }
  37.  
  38. return $acc;
  39. };
  40.  
  41. $combined = ['ITEMS' => array_values(array_reduce($result['ITEMS'], $myFunc, []))];
  42.  
  43. var_export($combined);
Success #stdin #stdout 0.02s 24504KB
stdin
Standard input is empty
stdout
array (
  'ITEMS' => 
  array (
    0 => 
    array (
      'ID' => 222,
      'SORT' => 300,
      'NAME' => 'NAME_1',
      'GROUPS' => 
      array (
        0 => 21236,
      ),
    ),
    1 => 
    array (
      'ID' => 333,
      'SORT' => 300,
      'NAME' => 'NAME_2',
      'GROUPS' => 
      array (
        0 => 3213,
        1 => 21236,
      ),
    ),
  ),
)