return关键字在php中无法正常工作

时间:2015-10-27 17:00:47

标签: php recursion return-value

我正在使用这段功能来检查文件是否存在。如果文件存在,那么我正在更改其名称

 function checkFileExist($fileName,$z,$ext,$folderWIthFileName){
    $tmpNam="";
      if (file_exists($fileName."_".$z.".".$ext)) {
            $z=$z+1;
            checkFileExist($fileName,$z,$ext,$folderWIthFileName);
        }else{
            $tmpNam=$fileName."_".$z;
            echo "in else <br> ".$fileName."_".$z."<br>";
            }
    return $tmpNam;
}

并将此功能称为

$definename=checkFileExist($folderWIthFileName."/".$InvId,$z,$ext,$folderWIthFileName);
echo "new name is ".$definename;

但这给了我这样的输出

in else 
444_2015-10-27/444_3
new name is

你可以看到回报工作不正常,我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您应该在第一个块中使用return checkFileExist($fileName,$z,$ext,$folderWIthFileName);来从递归调用中返回值。使用这个干净的版本:

function checkFileExist($fileName, $z, $ext, $folderWIthFileName){
    if (file_exists($fileName."_".$z.".".$ext)) {
        return checkFileExist($fileName, $z+1, $ext, $folderWIthFileName);
    }
    return $fileName."_".$z;
}
相关问题