为啥这个 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 递归函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章