首页 > 解决方案 > 在php中计算多维数组

问题描述

我需要计算一个多维数组,但有一些规则。

我的数组是这样的:

<?$array[$iddom][$idrisp][$idopt][$iddoc][$idut]=$text;?>

我有例如这个值:

[1][1][0][0][31248]=
[1][1][0][0][46619]=
[2][4][0][0][31248]=
[2][5][0][0][46619]=
[3][6][1][0][31248]=
[3][6][3][0][46619]=
[3][7][3][0][31248]=
[3][7][2][0][46619]=
[3][8][1][0][31248]=
[3][8][1][0][46619]=
[4][9][0][0][46619]=
[4][11][0][0][31248]=
[5][13][5][0][31248]=
[5][13][6][0][46619]=
[5][14][4][0][31248]=
[5][14][4][0][46619]=
[5][15][6][0][31248]=
[5][15][5][0][46619]=
[6][0][7][6][31248]=
[6][0][7][6][46619]=

如果我只想计算数组的一部分,我使用以下代码:

<?$count=array_sum(array_map("count", $array[$key]));?>

在这种情况下计数是正确的

[2][4][0][0][31248]=
[2][5][0][0][46619]=

计数的结果是 2

但在这种情况下,结果是 1

[1][1][0][0][31248]=
[1][1][0][0][46619]=

我如何计算动态数组多维?因为在另一种情况下,我需要计算另一个级别的数组,例如:

<?$count=array_sum(array_map("count", $array[$key][$key2]));?>

谢谢

标签: phparrays

解决方案


您可以包装这些功能:

$count = count(iterator_to_array(new RecursiveIteratorIterator(
                 new RecursiveArrayIterator($array)
         )));

替换$array为您想要应用计数的任何键,例如$array[$key][$key2].


推荐阅读