2010-08-06 106 views
2

如何在多維數組中組合相同的值?如何在多維數組中分組相同的值?

我想這

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

就像這樣:http://reference.wolfram.com/mathematica/ref/Gather.html? – Artefacto 2010-08-06 13:03:54

+0

我不太瞭解它。 – Codler 2010-08-06 13:11:35

回答

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)那樣他們不能)。

+0

謝謝!它工作完美! – Codler 2010-08-06 13:16:49

+0

我們如何在js中做到這一點? – Deep 2017-01-20 11:50:39