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);

preferences:
149.74 ms | 405 KiB | 5 Q