2014-07-07 24 views
1

我有一個這樣的數組。在php multidimentional數組中找到重複項並將它們放入新數組中

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [id] => 123 
        [name] => abc 
        [age] => 21 

       ) 

      [1] => Array 
       (
        [id] => 456 
        [name] => abc 
        [age] => 25 
       ) 
      [2] => Array 
       (
        [id] => 789 
        [name] => ghi 
        [age] => 40 
       ) 
       ) 
      ) 

什麼我想要做的是,數組中找到任何重複的名稱和地點,在一個新的array.So終於我的數組必須是這樣。

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [id] => 123 
        [name] => abc 
        [age] => 21 

       ) 

      [1] => Array 
       (
        [id] => 789 
        [name] => ghi 
        [age] => 40 
       ) 
      ) 
    [1] => Array 
     (
      [0] => Array 
       (
        [id] => 456 
        [name] => abc 
        [age] => 25 

      ) 
     ) 

      ) 

我正在努力如何做到這一點。任何機構請幫我解決這個問題?

+0

你試過了什麼?您需要遍歷數組(foreach),獲取每個名稱並使用嵌套循環與所有其他名稱進行比較。 –

+0

我是新來multidimentional數組,可以遍歷數組,並可以後,我可以處理值? – devuser

回答

1

你可以使用一個簡單的foreach,如果它看到一個,你可以將重複數組推到下一個維度。例如:

$values = array(
    array(
     array('id' => 123, 'name' => 'abc', 'age', 21), 
     array('id' => 456, 'name' => 'abc', 'age', 25), 
     array('id' => 789, 'name' => 'ghi', 'age', 40), 
    ), 
); 

foreach($values as $batch) { 
    $temp = array(); 
    foreach($batch as $key => $value) { 
     if(!isset($temp[$value['name']])) { 
      $temp[$value['name']] = $value; // temporary storage 
     } else { 
      unset($batch[$key]); 
      $values[][] = $value; // push it outside this batch 
     } 
    } 
} 

echo '<pre>'; 
print_r($values); 
相關問題