dongshi2588 2019-08-09 21:03
浏览 61

使用php中的递归函数调用,回声不会嵌套

So, I have a function that's meant to take a multi-dimensional array and print it out as a nice html drill-down navigation:

<?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>";
  }
}

The problem is if I pass it an array like

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

Instead of getting a nested result like

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

I'm getting an incorrect printout more flat like

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

I've looked over it a few times, and I can't quite figure out why. I feel like I'm missing something obvious.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。