php - PHP - 在递归函数中连接
问题描述
我有这样的功能:
function getTree($r, $html) {
foreach ($r as $entry) {
if (count($entry['children']) == 0) {
$html .= '<li>' . $entry['parent_entry_id'] . '</li>';
} else {
getTree($entry['children'], $html);
}
//var_dump($html);
}
return $html;
}
如果我这样称呼它
$html = '';
$dzoni = getTree($results, $html);
echo $dzoni;
E 期望得到很少的列表元素但我得到空字符串。数据没有问题。如果我 var_dump 他们我得到结果。但结果并不总是连接。它只是在某个时候停止。var_dump 示例:
C:\wamp64\www\co_3\regular_view.php:72:string '<li>17</li>'
C:\wamp64\www\co_3\regular_view.php:72:string '<li>17</li><li>18</li>'
C:\wamp64\www\co_3\regular_view.php:72:string '<li>22</li>'
我究竟做错了什么?
解决方案
递归时,需要使用返回值而不是丢弃它:
getTree($entry['children'], $html);
应该是这样的:
$html = getTree($entry['children'], $html);
推荐阅读
- coq - 我可以以某种方式堆叠隐式类型吗?
- mysql - 添加连接池后代码运行顺序错误(需要异步/等待?)
- python - 循环导入在导入 tkinter 时生成 AttributeError
- c - 填充是否曾经添加到这个 C 结构中?
- reactjs - 如何自定义 ag grid react 主题
- node.js - Feathersjs设置问题
- java - 测试kafka出站通道适配器时如何接收kafka消息
- javascript - 更新 Node.js 后,Node 项目停止工作
- mysql - MySQL:如果所有联合表行的值为true,则返回一行
- python - 使用 if 语句在字符串中搜索子字符串在类似变量类型中的行为不同