@Chiang
2020-08-29T17:07:17.000000Z
字数 815
阅读 761
2020-08
工作总结
当然大家可能会想直接使用
foreach
循环,下面是我的想法
如下数组我需要计算出数组
$arr
的底层最里面元素个数(即8个),我们的第三维数组里至少是有一条数据的.
$arr = [
[
[100],
],
[
[103, 'a3'],
],
[
[104, 'a4'],
[105, 'a5', 'a6'],
],
];
foreach
: 因为 第三维数组里至少是有一条数据的 所以foreach
立马浮现,但是要写好几个嵌套,有点繁琐.count
: 后来想着count
是计算数组元素个数的,那能计算多维嘛!!
资料显示:
count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] ) : int
mode
如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。
但是它计算出来的值是 15个 不是我想要的值.- 把数组转成一维数组,然后再求和运算.
可实现函数:
array_reduce();
array_walk_recursive();
array_map();
用
array_walk_recursive()
函数就非常灵活,可以把任意维度的数组转换成一维数组。
$result = [];
array_walk_recursive($arr, function($value) use (&$result) {
array_push($result, $value);
});
$result // [100, 103, 'a3', 104, 'a4', 105, 'a5', 'a6'];
count($result); //8
参考资料:
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
PHP多维数组中统计元素个数
count
PHP教程 计算多维数组中的元素个数