<?php
function array_partition($array, $callback, $recursive = true) {
$ret = array ();
$walk = ($recursive) ? 'array_walk_recursive' : 'array_walk';
$walk ( $array, function ($value, $key) use($callback, &$ret) {
$index = call_user_func_array ( $callback, array (
$value,
$key
) );
if (isset ( $ret [$index] ))
$ret [$index] [] = $value;
else
$ret [$index] = array (
$value
);
} );
return $ret;
}
$p1 = (object) array(a=>1,b=>2);
$p2 = (object) array(a=>1,b=>3);
$p3 = (object) array(a=>2,b=>4);
$posts[] = $p1;
$posts[] = $p2;
$posts[] = $p3;
$posts = array_partition($posts, function ($post, $i) {
return $post->a;
}, false);
print_r($posts);
?>
preferences:
48.2 ms | 402 KiB | 5 Q