2010-09-08 46 views
0

我有陣列匹配子陣列並計數

Array 
(
    [1] => Array 
     (
      [0] => 1 
      [1] => 3 
     ) 

    [2] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 

    [3] => Array 
     (
      [0] => 1 
      [1] => 3 
     ) 

) 

和我需要找到共同的子陣列

在上述示例陣列1和3具有共同的子陣列

(
    [0] => 1 
    [1] => 3 
) 

所以最終的陣列必須是

Array 
(
    [1] => Array 
     (
      [0] => 1 
      [1] => 3 
     ) 

    [2] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 
) 

但我需要計算一些常見的值如何。

任何建議。

+0

是'陣列(1 ,3)==數組(3,1)'? – knittl 2010-09-08 07:30:38

回答

1

只是比較陣列的每個元素與其他假設它們爲線性陣列,但使用array_diff來比較每個元素。如果它們是不同的副本中的元素或數組索引到另一個陣列

3

我不會用這種生產代碼,但這裏有一個快速的&有些聰明的方式做到這一點:

$arrays = array(array(1,3), array(1,2), array(1,3)); // Your example data 

$serialized = array_map('serialize', $arrays); 
$counts = array_count_values($serialized); 
foreach ($counts as $data => $count) { 
    echo "$count: " . print_r(unserialize($data), true); 
}