当前位置:Gxlcms > PHP教程 > PHP多维数组中统计元素个数

PHP多维数组中统计元素个数

时间:2021-07-01 10:21:17 帮助过:19人阅读

  1. <code>Array
  2. (
  3. [0] => Array
  4. (
  5. [0] => Array
  6. (
  7. [0] => Array
  8. (
  9. [id] => 12
  10. [name] => '1'
  11. )
  12. [1] => Array
  13. (
  14. [id] => 28
  15. [name] => '2'
  16. )
  17. .....
  18. )
  19. [1] => Array
  20. (
  21. [0] => Array
  22. (
  23. [id] => 121
  24. [name] => '2'
  25. )
  26. [1] => Array
  27. (
  28. [id] => 281
  29. [name] => '4'
  30. )
  31. ...
  32. )
  33. )
  34. ....
  35. )</code>

我想统计name对应的值出现的次数,
比如name='2'出现的次数是2
比如name='4'出现的次数是1

有什么好的办法么?

只能使用遍历的话,如何效率最高?

可以使用外部工具:mysql,Memcache、redis。

回复内容:

  1. <code>Array
  2. (
  3. [0] => Array
  4. (
  5. [0] => Array
  6. (
  7. [0] => Array
  8. (
  9. [id] => 12
  10. [name] => '1'
  11. )
  12. [1] => Array
  13. (
  14. [id] => 28
  15. [name] => '2'
  16. )
  17. .....
  18. )
  19. [1] => Array
  20. (
  21. [0] => Array
  22. (
  23. [id] => 121
  24. [name] => '2'
  25. )
  26. [1] => Array
  27. (
  28. [id] => 281
  29. [name] => '4'
  30. )
  31. ...
  32. )
  33. )
  34. ....
  35. )</code>

我想统计name对应的值出现的次数,
比如name='2'出现的次数是2
比如name='4'出现的次数是1

有什么好的办法么?

只能使用遍历的话,如何效率最高?

可以使用外部工具:mysql,Memcache、redis。

  1. <code class="php">
  2. $result = array();
  3. array_walk_recursive($demo, function($value,$key) use(&$result){
  4. if ($key == 'name') {
  5. $result[$value] += 1;
  6. }
  7. });
  8. print_r($result);</code>

不知道能不能满足你的需求。最终的数组中的key==name的值

首先,比较中意楼上的方法
其次,这个本身也可以通过递归函数的方式来实现

  1. <code>function doFind(array $demo, &$result) {
  2. foreach ($demo as $key => $value) {
  3. if (is_array($value)) {
  4. doFind($value, $result);
  5. }
  6. if ($key == 'name') {
  7. if (!isset($result[$value])) {
  8. $result[$value] = 1;
  9. } else {
  10. $result[$value]++;
  11. }
  12. }
  13. }
  14. }
  15. $ret = [];
  16. doFind($demo, $ret);
  17. var_dump($ret);</code>
  1. <code>通过对数组进行递归判断,进行值统计。</code>

人气教程排行