php - 使用php动态多维数组值计数
问题描述
我正在尝试为以下 Array 值计算多维数组中的数组值。
$allMultiGridRes = Array
(
[0] => Array
(
[1] => Array
(
[1] => grid multi col1
[2] => grid multi col2
)
[2] => Array
(
[1] => grid multi col1
)
)
[1] => Array
(
[1] => Array
(
[1] => grid multi col1
[2] => grid multi col2
)
[2] => Array
(
[1] => grid multi col1
[2] => grid multi col2
)
)
[2] => Array
(
[1] => Array
(
[1] => grid multi col1
[2] => grid multi col2
)
[2] => Array
(
[1] => grid multi col1
[2] => grid multi col2
)
)
)
我期待以下输出。
Array
(
[1] => Array
(
[grid multi col1] => 3
[grid multi col2] => 3
)
[2] => Array
(
[grid multi col1] => 3
[grid multi col2] => 2
)
)
我已经尝试使用以下方法,for loop
但我无法实现上述输出。
$allMultiGridRes =array();
$paramCheck =array();
foreach ($allMultiGridRes as $gMKey => $GMvalue){
if(!empty($GMvalue)){
foreach ($GMvalue as $gMKey2 => $gMValue2){
if(!empty($gMValue2)){
$allGridCount[$gMKey2] = array_count_values($gMValue2);
foreach ($gMValue2 as $gMKey3 => $gMValue3){
$paramCheck = !empty($allGridCount[$gMKey2])?$allGridCount[$gMKey2]:array();
$GMindex1 = $gMValue3;
$allGridCount[$gMKey2][$GMindex1] = array_key_exists($GMindex1,$paramCheck) ? $allGridCount[$gMKey2][$GMindex1]++ : 1;
}
}
}
}
}
}
使用此方法,我得到以下输出,但值未按预期计算。
Array
(
[1] => Array
(
[grid multi col1] => 1
[grid multi col2] => 1
)
[2] => Array
(
[grid multi col1] => 1
[grid multi col2] => 1
)
)
我对建议持开放态度,我也尝试了很多方法,但仍然无法实现。我被困在这里很长时间
提前致谢。
解决方案
您可以使用array_reduce
和foreach
$allMultiGridRes = ;//Your array
$result = array_reduce($allMultiGridRes, function($c, $v){
foreach ( $v as $key => $value ) {
if ( !isset( $c[$key] ) ) $c[$key] = array();
foreach( $value as $o ) {
if ( !isset( $c[$key][$o] ) ) $c[$key][$o] = 0;
$c[$key][$o]++;
}
}
return $c;
},array());
print_r( $result );
这将导致:
Array
(
[1] => Array
(
[grid multi col1] => 3
[grid multi col2] => 3
)
[2] => Array
(
[grid multi col1] => 3
[grid multi col2] => 2
)
)
推荐阅读
- angular - Docker with netcore + angular 10 构建失败
- vue.js - TypeError:基于 Nuxt 的生产版本
- tensorflow-federated - TFF trainer.next 不可调用
- php - 如何使用 Treebuilder 在 Bundleless 应用程序中加载自定义配置文件?
- mongodb - 如何按 MongoDB 中的特定字段对文档进行分组
- java - Spring:为什么用@PostConstruct注解的方法不能是静态的?
- angular - 提交表单时如何(仅)触发表单验证?
- google-cloud-functions - 我可以授予 cloudfunctions.functions.call 特定功能吗?
- python-3.x - TensorFlow 添加大数
- ansible-inventory - Ansbile OCI 集合 - 库存插件