首页 > 解决方案 > 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>' 

我究竟做错了什么?

标签: phprecursion

解决方案


递归时,需要使用返回值而不是丢弃它:

getTree($entry['children'], $html);

应该是这样的:

$html = getTree($entry['children'], $html);

推荐阅读