欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

一个无限循环数组的例子(递归)

程序员文章站 2022-04-08 20:57:38
...
  1. /**

  2. * Author : GuoWangYunYan
  3. * QQ : 279861795
  4. * Date : 2011-6-23
  5. * link:www.jbuxe.com
  6. */
  7. //设置编码
  8. header('Content-type: text/html; charset=utf-8');
  9. //比较变态的用了个五维数组
  10. $a = array(
  11. 'AAAAAA' => array(
  12. 'aaaaaa' => array(
  13. '111111',
  14. '222222',
  15. '333333'
  16. ),
  17. 'bbbbbb' => array(
  18. '111111',
  19. '222222',
  20. '333333'
  21. ),
  22. 'cccccc' => array(
  23. '111111',
  24. '222222',
  25. '333333'
  26. ),
  27. ),
  28. 'BBBBBB' => array(
  29. 'aaaaaa' => array(
  30. '111111',
  31. '222222',
  32. '333333'
  33. ),
  34. 'bbbbbb'=> array(
  35. '111111',
  36. '222222',
  37. '333333'
  38. ),
  39. 'cccccc'=> array(
  40. '111111',
  41. '222222',
  42. '333333'
  43. ),
  44. ),
  45. 'CCCCCC' => array(
  46. 'aaaaaa'=> array(
  47. '111111',
  48. '222222',
  49. '333333'
  50. ),
  51. 'bbbbbb'=> array(
  52. '111111',
  53. '222222',
  54. '333333'
  55. ),
  56. 'cccccc' => array(
  57. '111111'=>array('44','55','66'),
  58. '222222'=>array('44','55','66'),
  59. '333333'=>array(
  60. '44'=>array('77','88','99'),
  61. '55'=>array('77','88','99'),
  62. '66'=>array('77','88','99'),
  63. ),
  64. ),
  65. ),
  66. );
  67. //执行函数

  68. fun($a);
  69. //无限分类 递归大法开始
  70. function fun ($_info,$deep=0){
  71. //判断是不是数组
  72. if (is_array($_info)){
  73. //foreach 循环
  74. foreach ($_info as $key=>$val){
  75. //第一次前面-没有 以后每次循环增加4个 顺便输出键名
  76. echo str_repeat(' - ',$deep).$key.'
    ';
  77. //递归 输出键值 顺便每次前面增加4个----
  78. fun($val,$deep+4);
  79. }
  80. } else {
  81. //如果键值不是数组 那么 直接返回
  82. echo str_repeat('-', $deep) . "$val
    ";
  83. }
  84. }
  85. ?>
复制代码

递归解释: 递归作为一种算法,在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。 递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。

若不采用递归,执行效率相对较低。