【发布时间】:2013-09-21 20:36:37
【问题描述】:
递归函数输出有点问题。代码如下:
function getTemplate($id) {
global $templates;
$arr = $templates[$id-1];
if($arr['parentId'] != 0) {
$arr['text'] .= str_replace($arr['attr'], $arr['text'], getTemplate($arr['parentId']));
}
return $arr['text'];
}
问题在于该函数在每次迭代时都会返回一个值,如下所示:
文件.exe
类别/file.exe
根目录/类别/file.exe
我只需要最后一个类似于完整路径的字符串。有什么建议吗?
//UPD:完成,问题出在$arr['text'] .= str_replace中的点
【问题讨论】:
-
什么是
$templates- 示例? -
@sashkello 它肯定是一个递归函数,因为它会调用自己。
-
如果您正在处理目录和文件,请查看 RecursiveDirectoryIterator() php.net/manual/es/class.recursivedirectoryiterator.php
-
@sash - 调用自身的函数必须在术语递归下
-
这段代码如果不使用全局代码会更好很多。没有必要,它增加了不必要的复杂性。