如何在多维数组中对相同的值进行分组?
我想要这个
array(
array('a' => 1, 'b' => 'hello'),
array('a' => 1, 'b' => 'world'),
array('a' => 2, 'b' => 'you')
)
成为
array(
array(
array('a' => 1, 'b' => 'hello'),
array('a' => 1, 'b' => 'world')
),
array('a' => 2, 'b' => 'you')
)
答案 0 :(得分:1)
function array_gather(array $orig, $equality) {
$result = array();
foreach ($orig as $elem) {
foreach ($result as &$relem) {
if ($equality($elem, reset($relem))) {
$relem[] = $elem;
continue 2;
}
}
$result[] = array($elem);
}
return $result;
}
然后
array_gather($arr,
function ($a, $b) { return $a['a'] == $b['a']; }
);
如果你的所有组都可以减少到一个字符串值(在这种情况下它们可以,但是如果你的内部数组类似于array('a' => ArbitraryObject)
那么它们不可能),这可以在一个更有效的问题上实现。 / p>