3v4l.org

run code in 300+ PHP versions simultaneously
<?php $result = array( array( 'task_id' => 1, 'name' => 'do dishes', 'user' => 'bob' ), array( 'task_id' => 1, 'name' => 'do dishes', 'user' => 'liam' ), array( 'task_id' => 2, 'name' => 'vacuum', 'user' => 'liam' ), array( 'task_id' => 3, 'name' => 'Take out thrash', 'user' => 'liam' ), array( 'task_id' => 3, 'name' => 'Take out thrash', 'user' => 'bob' ), ); function get_arrayvalues_bykeyvalue($array, $key, $key2, $v2) { $ret = array(); foreach($array as $arr) { foreach($arr as $k => $v) { if($arr[$key2] == $v2) { if($k == $key) $ret[] = $v; } } } $u = array_unique($ret); return (sizeof($u) == 1) ? $u[0] : $u; } $res = array(); foreach($result as $arr) { foreach($arr as $k => $v) { if($k == 'user') $res[$arr['task_id']][$k] = get_arrayvalues_bykeyvalue($result, $k, 'task_id', $arr['task_id']); else $res[$arr['task_id']][$k] = $v; } } print_r($res);
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.37, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.6 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.14
Array ( [1] => Array ( [task_id] => 1 [name] => do dishes [user] => Array ( [0] => bob [1] => liam ) ) [2] => Array ( [task_id] => 2 [name] => vacuum [user] => liam ) [3] => Array ( [task_id] => 3 [name] => Take out thrash [user] => Array ( [0] => liam [1] => bob ) ) )

preferences:
170.8 ms | 412 KiB | 5 Q