首页 > 解决方案 > 使用php中的递归函数调用,回声不嵌套

问题描述

因此,我有一个函数,该函数旨在获取一个多维数组并将其打印为一个不错的 html 向下钻取导航:

<?php
function html_print_r($array = [], $level=0, $pass_id = "-000"){
  $my_rand = rand();
  if (is_array($array)){
    foreach ($array as $key => $val){
      echo '<p>';
      for ($i = 0; $i < $level; $i++){
        // Some visual effect, adding pipe symbols to show depth.
        echo "&#124;";
      }
      echo '<a onclick=$' . "('#" . $key . $my_rand . "').toggle()>" . $key . "</a> [+]";
      html_print_r($val, true, $level + 1, $key . $my_rand);
      echo "</p>";
    }
  } elseif(is_object($array)) {
    html_print_r((array)$array, true, $level);
  } else{
    echo "<pre style='display:none; id='" . $pass_id . "' >" . $array . "</pre>";
  }
}

问题是如果我将它传递给一个数组

["Item1"=> ["Item1a"=>"foo"], "Item2" => "Bar"]

而不是得到像这样的嵌套结果

"Item1" [+]
 |  "Item1a" [+]
 |  |    "foo"
"Item2"[+]
 |   "Bar"

我得到一个不正确的打印输出,更平坦

"Item1" [+]
    ""    
|
"Item1z" [+]
    ""
|
 "foo"
|
"Item2" [+]
    ""
|
"Bar"

看了好几遍了,不知道是什么原因。我觉得我错过了一些明显的东西。

标签: php

解决方案


推荐阅读