php统计多维数组元素个数的方法介绍(附代码)

本篇文章给大家带来的内容是关于php统计多维数组元素个数的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一般情况下,使用count可以直接统计数组的元素个数

  1. $arr = [
  2. 'a',
  3. 'b',
  4. ];
  5. echo count($arr);//2

但是遇到二位数组的时候,我们想统计第二层的元素个数,这个时候可以使用count函数的第二个参数,count($arr, $mode = 0);$mode(0:统计一维的所有元素,1:循环统计遍历元素)

在$mode=1的时候,count函数会循环统计元素的个数,如果元素$a是个数组则数量会总数会增加$a元素数加1;

  1. $arr = [
  2. 'a' => 'b',
  3. 'c' => [
  4. 'd',
  5. ],
  6. ];
  7. echo count($arr, 1);//3('b',['d'],'d')

只要二维数组有规律,则可以很方便的统计二维的元素个数

  1. $arr = [
  2. 'a' => [
  3. 'd',
  4. 'e',
  5. ],
  6. 'c' => [
  7. 'd',
  8. 'g',
  9. ],
  10. ];
  11. echo count($arr, 1) - count($arr);//4

使用array_map也可以

  1. $arrCount = 0;
  2. $countFun = function($a) use(&$arrCount) {
  3. $arrCount += count($a);
  4. return $arrCount;
  5. };
  6. array_map($countFun,$arr);
  7. echo $arrCount;

记住$arrCount一定要引用传值,如果要统计三维数组的元素个数

  1. $arr = [
  2. 'a' => [
  3. 'b' => [
  4. 'd',
  5. 'e',
  6. 'g',
  7. ],
  8. ],
  9. 'c' => [
  10. 'd' => [
  11. 'd',
  12. 'g',
  13. ],
  14. ],
  15. ];
  16. $arrCount = 0;
  17. $countFun = function($a) use(&$arrCount) {
  18. $arrCount += count($a, 1) - count($a);
  19. return $arrCount;
  20. };
  21. array_map($countFun,$arr);
  22. echo $arrCount;

如果要统计四维数组的元素个数

  1. $arr = [
  2. 'a' => [
  3. 'b' => [
  4. 'd' => [
  5. 'e',
  6. 'g',
  7. ],
  8. ],
  9. ],
  10. 'c' => [
  11. 'd' => [
  12. 'd' => [
  13. 'e',
  14. 'g',
  15. 'f'
  16. ],
  17. ],
  18. ],
  19. ];
  20. $arrCount = 0;
  21. $napFun = function($a) use(&$arrCount) {
  22. $countFun = function($a) use(&$arrCount) {
  23. $arrCount += count($a, 1) - count($a);
  24. return $arrCount;
  25. };
  26. array_map($countFun,$a);
  27. return $arrCount;
  28. };
  29. array_map($napFun,$arr);
  30. echo $arrCount;

如果是统计3维或更高维度的建议使用递归的方法

  1. $arr = [
  2. 'a' => [
  3. 'b' => [
  4. 'd' => [
  5. 'e',
  6. 'g',
  7. ],
  8. ],
  9. ],
  10. 'c' => [
  11. 'd' => [
  12. 'd' => [
  13. 'e',
  14. 'g',
  15. 'f'
  16. ],
  17. ],
  18. ],
  19. ];
  20. function arrCount($arr, &$arrCount, $level){
  21. if(0 === $level){
  22. $arrCount += count($arr);
  23. print_r($arr);
  24. }else{
  25. $level--;
  26. foreach($arr as $a){
  27. arrCount($a, $arrCount, $level);
  28. }
  29. }
  30. }
  31. $count = 0;
  32. $level = 3;
  33. arrCount($arr,$count,$level);
  34. echo $count;