首页 > 语言 > PHP > 正文

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

2024-09-04 11:46:47
字体:
来源:转载
供稿:网友

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

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

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

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

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

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

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

  1. $arr = [ 
  2.  
  3. 'a' => [ 
  4.  
  5.     'd'
  6.  
  7.     'e'
  8.  
  9. ], 
  10.  
  11. 'c' => [ 
  12.  
  13.     'd'
  14.  
  15.     'g'
  16.  
  17. ], 
  18.  
  19. ]; 
  20.  
  21. echo count($arr, 1) - count($arr);//4 

使用array_map也可以

  1. $arrCount = 0; 
  2.  
  3. $countFun = function($ause(&$arrCount) { 
  4.  
  5. $arrCount += count($a); 
  6.  
  7. return $arrCount
  8.  
  9. }; 
  10.  
  11. array_map($countFun,$arr); 
  12.  
  13. echo $arrCount

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

  1. $arr = [ 
  2.  
  3. 'a' => [ 
  4.  
  5.    'b' => [ 
  6.  
  7.        'd'
  8.  
  9.        'e'
  10.  
  11.        'g'
  12.  
  13.    ], 
  14.  
  15. ], 
  16.  
  17. 'c' => [ 
  18.  
  19.     'd' => [ 
  20.  
  21.         'd'
  22.  
  23.         'g'
  24.  
  25.     ], 
  26.  
  27. ], 
  28.  
  29. ]; 
  30.  
  31. $arrCount = 0; 
  32.  
  33. $countFun = function($ause(&$arrCount) { 
  34.  
  35.  
  36. $arrCount += count($a, 1) - count($a); 
  37.  
  38. return $arrCount
  39.  
  40. }; 
  41.  
  42. array_map($countFun,$arr); 
  43.  
  44. echo $arrCount

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

  1. $arr = [ 
  2.  
  3. 'a' => [ 
  4.  
  5.    'b' => [ 
  6.  
  7.        'd' => [ 
  8.  
  9.            'e'
  10.  
  11.            'g'
  12.  
  13.        ], 
  14.  
  15.    ], 
  16.  
  17. ], 
  18.  
  19. 'c' => [ 
  20.  
  21.     'd' => [ 
  22.  
  23.         'd' => [ 
  24.  
  25.             'e'
  26.  
  27.             'g'
  28.  
  29.             'f' 
  30.  
  31.         ], 
  32.  
  33.     ], 
  34.  
  35. ], 
  36.  
  37. ]; 
  38.  
  39. $arrCount = 0; 
  40.  
  41. $napFun = function($ause(&$arrCount) { 
  42.  
  43.  
  44. $countFun = function($ause(&$arrCount) { 
  45.  
  46.     $arrCount += count($a, 1) - count($a); 
  47.  
  48.     return $arrCount
  49.  
  50. }; 
  51.  
  52. array_map($countFun,$a); 
  53.  
  54. return $arrCount
  55.  
  56. }; 
  57.  
  58. array_map($napFun,$arr); 
  59.  
  60. echo $arrCount

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

  1. $arr = [ 
  2.  
  3. 'a' => [ 
  4.  
  5.     'b' => [ 
  6.  
  7.        'd' => [ 
  8.  
  9.            'e'
  10.  
  11.            'g'
  12.  
  13.        ], 
  14.  
  15.     ], 
  16.  
  17. ], 
  18.  
  19. 'c' => [ 
  20.  
  21.     'd' => [ 
  22.  
  23.         'd' => [ 
  24.  
  25.             'e'
  26.  
  27.             'g'
  28.  
  29.             'f' 
  30.  
  31.         ], 
  32.  
  33.     ], 
  34.  
  35. ], 
  36.  
  37. ]; 
  38.  
  39.  
  40. function arrCount($arr, &$arrCount$level){ 
  41.  
  42. if(0 === $level){ 
  43.  
  44.     $arrCount += count($arr); 
  45.  
  46.     print_r($arr); 
  47.  
  48. }else
  49.  
  50.     $level--; 
  51.  
  52.     foreach($arr as $a){ 
  53.  
  54.         arrCount($a$arrCount$level); 
  55.  
  56.     } 
  57.  
  58.  
  59.  
  60. $count = 0; 
  61.  
  62. $level = 3; 
  63.  
  64. arrCount($arr,$count,$level); 
  65.  
  66. echo $count

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表