V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrMike
V2EX  ›  PHP

这个递归的函数为什么不能 return?

  •  
  •   MrMike · 2017-09-22 07:52:48 +08:00 · 2766 次点击
    这是一个创建于 2408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public function getFolder($dir, $num)
    {
    $targetDir = rtrim($dir, '/');
    if (!is_dir($targetDir))
    return false;
    $result = false;
    $folders = scandir($targetDir);
    foreach ( $folders as $folder)
    {
    if($folder == '.' || $folder == '..' || $folder == '__MACOSX' || $folder == '.DS_Store') {
    continue;
    }
    $subDir = $targetDir . DIRECTORY_SEPARATOR . $folder;
    if (!is_dir($subDir))
    continue;
    if ($folder == $num)
    {
    $result = $targetDir . DIRECTORY_SEPARATOR . $folder;
    return $result;
    } else {
    return $this->getFolder($subDir, $num);
    }
    }
    }

    调试了半天,就是不能 return 到数据,return 为空。
    如果 else 不 return,可以 echo 出数据,也不能 return 值。
    5 条回复    2017-09-22 09:48:18 +08:00
    juneszh
        1
    juneszh  
       2017-09-22 08:54:26 +08:00
    这代码看得累
    yejinmo
        2
    yejinmo  
       2017-09-22 09:15:21 +08:00
    public function getFolder($dir, $num)
    {
    $targetDir = rtrim($dir, '/');
    if (!is_dir($targetDir))
    return false;
    $result = false;
    $folders = scandir($targetDir);
    foreach ( $folders as $folder)
    {
    if($folder == '.' || $folder == '..' || $folder == '__MACOSX' || $folder == '.DS_Store')
    {
    continue;
    }
    $subDir = $targetDir . DIRECTORY_SEPARATOR . $folder;
    if (!is_dir($subDir))
    continue;
    if ($folder == $num)
    {
    $result = $targetDir . DIRECTORY_SEPARATOR . $folder;
    return $result;
    }
    else
    {
    return $this->getFolder($subDir, $num);
    }
    }
    }
    yejinmo
        3
    yejinmo  
       2017-09-22 09:15:51 +08:00
    @yejinmo
    好吧 V2EX 不支持 tab 缩进。。
    sortbylist
        4
    sortbylist  
       2017-09-22 09:29:12 +08:00
    递归要有收敛,if ($folder == $num) 这个条件能成立么?不能成立就无限递归了。
    CEBBCAT
        5
    CEBBCAT  
       2017-09-22 09:48:18 +08:00 via Android
    说句无关的:V2EX 贴代码可以用 gist
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5622 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:12 · PVG 11:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.