我正在使用这段功能来检查文件是否存在。如果文件存在,那么我正在更改其名称
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
你可以看到回报工作不正常,我在这里做错了什么?
答案 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;
}