如何使用PHP找到多维数组中最常见的数组

如何使用PHP找到多维数组中最常见的数组,php,arrays,Php,Arrays,我需要在多维数组中找到最常见(最常见)的数组。不是像这篇文章那样最常见的价值观,而是最常见的组合 例如,如果我有以下内容: $a1=array( array('704322062'), array('678073776', '704322062'), array('678073776', '704322062'), array('704322064'), array('704322062'), array('678073776'), arr

我需要在多维数组中找到最常见(最常见)的数组。不是像这篇文章那样最常见的价值观,而是最常见的组合

例如,如果我有以下内容:

$a1=array(
    array('704322062'),
    array('678073776', '704322062'),
    array('678073776', '704322062'),
    array('704322064'),
    array('704322062'),
    array('678073776'),
    array('678073776', '704322062')
);
我希望能够检测到最常见的数组是
数组('678073776','704322062')
,而不是字符串
'704322062'
最常见

我尝试过使用array_intersect,但在这种情况下无法使用它


谢谢

array\u count\u值
仅适用于标量值,而不适用于项目本身为数组的情况。但我们仍然可以使用这个函数,如果我们首先将数组转换成字符串——将它们编码为JSON

// fill temp array with items encoded as JSON
$temp = [];
foreach($a1 as $item) {
  $temp[] = json_encode($item);
}

// count how many times each of those values occurs
$value_counts = array_count_values($temp);
// sort by number of occurrence, while preserving the keys
ksort($value_counts);

// pick the first key from the temp array
$first = array_key_first($value_counts);
这将使您现在以$first获得
[“678073776”,“704322062”]
-如果您想要“原始”数组,您可以再次对其进行
json\u解码


请注意,这并没有考虑到,两个数组可能出现相同的次数-然后它只会选择其中的“随机”第一个。如果您也需要以某种方式处理这种情况,那么您可以首先确定$temp中的最大值,然后根据该值对其进行过滤,以便只剩下相应数组的键。

数组计数值
仅适用于标量值,而不是当项目本身是数组时。但我们仍然可以使用这个函数,如果我们首先将数组转换成字符串——将它们编码为JSON

// fill temp array with items encoded as JSON
$temp = [];
foreach($a1 as $item) {
  $temp[] = json_encode($item);
}

// count how many times each of those values occurs
$value_counts = array_count_values($temp);
// sort by number of occurrence, while preserving the keys
ksort($value_counts);

// pick the first key from the temp array
$first = array_key_first($value_counts);
这将使您现在以$first获得
[“678073776”,“704322062”]
-如果您想要“原始”数组,您可以再次对其进行
json\u解码


请注意,这并没有考虑到,两个数组可能出现相同的次数-然后它只会选择其中的“随机”第一个。如果您也需要以某种方式处理这种情况,那么您可以首先确定$temp中的最大值,然后根据该值对其进行过滤,以便只剩下相应数组的键。

您没有解决
数组('678073776','704322062')
可能等于
数组('704322062','678073776')的问题
。问题并没有说明这一点。@KIKOSoftware good point–如果这也是一个要求,那么可以先对
$item
进行排序,然后再将其编码为JSON并添加到临时数组中。非常感谢@CBroe,这非常有效,我刚刚在@KIKOSoftware的point上对
$item
进行了排序。谢谢你们两位!您没有解决
array('678073776','704322062')
可能等于
array('704322062','678073776')
的问题。问题并没有说明这一点。@KIKOSoftware good point–如果这也是一个要求,那么可以先对
$item
进行排序,然后再将其编码为JSON并添加到临时数组中。非常感谢@CBroe,这非常有效,我刚刚在@KIKOSoftware的point上对
$item
进行了排序。谢谢你们两位!