php - 在 PHP 中查找多维数组中最常见的值
问题描述
我试图从多维数组中获取作为数组的公共值。
这是我的数组看起来像:
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 是最多的。
我提到了这个:
我没有得到最起码的问题是没有进入最终数组。
需要的输出
Array
(
[0] => 000
[1] => 001
[2] => 002
[3] => 003
)
解决方案
您可以使用 aforeach
并使用数组值作为键,并在每次匹配时递增。
最后使用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
)
推荐阅读
- windows - 如何设置音频端点音量范围?
- php - MYSQL PHP JSON 返回每个产品的所有图像
- mysql - 如何解密存储在 mySQL 数据库中的键值数据?
- wso2 - EI 7.0.1 是否包含 BPS?
- vim - 如何一次在 YAML 文件的多行中插入同一行
- node.js - mongodb findMany by id 在数组中的所有记录中
- r - 结合 r-handler 和 tls
- fortran - 复数与实数变量的 Fortran 性能
- spring - Spring task:scheduled 或 @Scheduler 限制作业在多个实例中运行
- javascript - 将条件用户访问放在 ajax 上