我正在尝试从多维数组中获取公共值作为数组。
这是我的数组的样子:
Array
(
[0] => Array
(
[0] => 000
[1] => 001
[2] => 002
[3] => 003
)
[1] => Array
(
[0] => 000
[1] => 001
[2] => 002
)
[2] => Array
(
[0] => 000
[1] => 001
)
[3] => Array
(
[0] => 000
[1] => 001
[2] => 002
[3] => 003
)
[4] => Array
(
[0] => 000
[1] => 001
[2] => 002
)
[5] => Array
(
[0] => 000
[1] => 001
)
)
我需要这样的结果。我需要在数组中找到最常用的值,这意味着数组中值000即将出现,应该在输出数组中的第一个出现,例如下一个值为001最多。
我提到了这个
Finding common value among sub-arrays in a multidimensional array
我没有得到最少的问题是没有进入最终阵列。
需要的输出
Array
(
[0] => 000
[1] => 001
[2] => 002
[3] => 003
)
答案 0 :(得分:2)
您可以使用foreach
并将数组值用作键,并在每次匹配时递增。
最后,使用ksort对键进行排序,并使用array_keys返回键:
$arrays = [
['000', '001', '002', '003'],
['000', '001', '002'],
['000', '001'],
['000', '001', '002', '003'],
['000', '001', '002'],
['000', '001'],
];
$result = [];
foreach ($arrays as $array) {
foreach ($array as $a) {
if (!array_key_exists($a, $result)) {
$result[$a] = 1;
continue;
}
$result[$a] += 1;
}
}
ksort($result);
print_r(array_keys($result));
输出
Array
(
[0] => 000
[1] => 001
[2] => 002
[3] => 003
)