php - 使用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 "|";
}
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"
看了好几遍了,不知道是什么原因。我觉得我错过了一些明显的东西。
解决方案
推荐阅读
- python - 中断循环以返回开始并添加更多循环
- android - ListView 对齐 - 如何?
- asp.net - 何时使用 FromUri 何时不在 ASP.NET Web API 中
- android - 无法将系统库链接到供应商二进制文件
- javascript - Is there an easy way to update CSV with an API data?
- javascript - 使用 Vue.js 进行键盘绑定
- macos - 以编程方式设置 UNNotificationSettings.lockScreenSetting
- sql - 将 Oracle 日期算术转换为 PostgreSQL
- c# - 我需要 dispose() 在单元测试中吗?
- javascript - Video.js 单击 SeekBar 时无法暂停视频