MrMike
V2EX  ›  PHP

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

  •  
  •   MrMike · Sep 22, 2017 · 3519 views
    This topic created in 3333 days ago, the information mentioned may be changed or developed.
    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 replies  •  2017-09-22 09:48:18 +08:00
    juneszh
    juneszh
    Sep 22, 2017
    1
    这代码看得累
    yejinmo
    yejinmo
    Sep 22, 2017
    2
    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
    yejinmo
    Sep 22, 2017
    3
    @yejinmo
    好吧 V2EX 不支持 tab 缩进。。
    sortbylist
    sortbylist
    Sep 22, 2017
    4
    递归要有收敛,if ($folder == $num) 这个条件能成立么?不能成立就无限递归了。
    CEBBCAT
    CEBBCAT
    Sep 22, 2017 via Android
    5
    说句无关的:V2EX 贴代码可以用 gist
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1727 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:28 · PVG 20:28 · LAX 04:28 · JFK 07:28
    ♥ Do have faith in what you're doing.