[关闭]
@Chiang 2020-08-29T17:07:17.000000Z 字数 815 阅读 764

PHP 计算三维数组的第三维元素总和

2020-08 工作总结


当然大家可能会想直接使用 foreach 循环,下面是我的想法

业务场景

如下数组我需要计算出数组 $arr 的底层最里面元素个数(即8个),我们的第三维数组里至少是有一条数据的.

  1. $arr = [
  2. [
  3. [100],
  4. ],
  5. [
  6. [103, 'a3'],
  7. ],
  8. [
  9. [104, 'a4'],
  10. [105, 'a5', 'a6'],
  11. ],
  12. ];

方案设想

  • 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()函数就非常灵活,可以把任意维度的数组转换成一维数组。

  1. $result = [];
  2. array_walk_recursive($arr, function($value) use (&$result) {
  3. array_push($result, $value);
  4. });
  5. $result // [100, 103, 'a3', 104, 'a4', 105, 'a5', 'a6'];
  6. count($result); //8

参考资料:
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
PHP多维数组中统计元素个数
count
PHP教程 计算多维数组中的元素个数

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注