2010-09-08 50 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); 
}