【问题标题】: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 生成这样的文档,而不是尝试自己堆叠元素。

标签: php recursion


【解决方案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:谢谢,拯救了我的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多