为啥这个 PHP 递归函数不起作用

Posted

技术标签:

【中文标题】为啥这个 PHP 递归函数不起作用【英文标题】:Why is this PHP recursion function not working为什么这个 PHP 递归函数不起作用 【发布时间】:2021-10-28 15:01:01 【问题描述】:

我编写了一个简单的 php 函数来遍历多维数组并以预先格式化的方式打印其内容。 但该函数并不深入,只是在文本中添加了一级叶节点。

谁能帮忙找出问题和解决办法?

function LOP($arrayItself, $txt)
    foreach($arrayItself as $fieldName=>$fieldValue)       
            if(is_array($fieldValue))
                    LOP($fieldValue, $txt);
            
            else 
                    $txt .= "<$fieldName>  $fieldValue  </$fieldName>";
            
    
    return $txt;

【问题讨论】:

走投无路:因为您似乎正在尝试在这里构建 XML 文档,我建议您使用 a proper XML building library 生成这样的文档,而不是尝试自己堆叠元素。 【参考方案1】:

在您的if(is_array($fieldValue)) 块中,您需要捕获对LOP() 的递归调用的返回值:

function LOP($arrayItself, $txt)
    foreach($arrayItself as $fieldName=>$fieldValue)       
            if(is_array($fieldValue))
                    $txt = LOP($fieldValue, $txt);
            
            else 
                    $txt .= "<$fieldName>  $fieldValue  </$fieldName>";
            
    
    return $txt;

【讨论】:

esqew:谢谢,拯救了我的一天。

以上是关于为啥这个 PHP 递归函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PHP 中的无限递归函数会导致段错误?

指针分配在递归函数中不起作用

XSLT 2.0 中的尾递归函数不起作用

erlang的递归不起作用。获取函数子句匹配错误

子串递归算法不起作用

为啥这个递归函数返回正确的值? [复制]