当前位置:Gxlcms > PHP教程 > 一个无限循环数组的例子(递归)

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

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

  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. ?>

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

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

人气教程排行