3v4l.org

run code in 300+ PHP versions simultaneously
<?php $myarray = [ '0' => array ( 'u' => '30', 'v' => '16', 'w' => '22', 'x' => '30', 'y' => '16', 'z' => '22', ), '1' => array ( 'u' => '32', 'v' => '25', 'w' => '1', 'x' => '30', 'y' => '16', 'z' => '22', ), '2' => array ( 'u' => '30', 'v' => '16', 'w' => '22', 'x' => '54', 'y' => '96', 'z' => '2', ), '3' => array ( 'u' => '30', 'v' => '16', 'w' => '22', 'x' => '3', 'y' => '1', 'z' => '6', ) ]; $supp = []; foreach ($myarray as $ind => $arr){ $uvw = sprintf('%d|%d|%d', $arr['u'], $arr['v'], $arr['w']); if (!isset($supp[$uvw])){ $supp[$uvw] = ['ind' => $ind, 'data' => $arr]; } else { foreach($arr as $in => $new_val){ foreach($supp[$uvw]['data'] as $i => &$val){ if ($i === $in && !in_array($i,['u','v','w'])){ $val .= ',' . $new_val; } } } } } $output = []; foreach($supp as $arr_data){ $output[$arr_data['ind']] = $arr_data['data']; } print_r($output);

preferences:
29.94 ms | 405 KiB | 5 Q