我有一个函数,给定文件名和目录路径,检查目录是否已经包含同名的文件,如果是,则返回修改后的文件名(通过在文件名的第一部分后附加一个数字)。(get_filenames() 函数是一个 CodeIgniter 辅助函数,它创建一个包含指定目录中所有文件名的数组。)
当我尝试打印出函数调用的返回结果时,我什么也得不到;但是如果我在函数本身的 else{} 语句中打印 $new_filename ,然后只需调用该函数(而不是打印它的值),它就可以工作!
我需要返回函数中的值,而不是打印它,因为我实际上需要将结果分配给一个变量以进行进一步处理。(在下面的示例中,我刚刚打印了函数调用的结果来证明这一点。)
功能:
function avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count)
{
$num = '';
if ($count > 0):
$num = $count;
endif;
$filename_arr = explode('.', $old_filename, -1);
$new_filename = $filename_arr[0] . $num . '.' . $filename_arr[1];
if (in_array($new_filename, get_filenames($dir))):
$count++;
avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count);
else:
return $new_filename;
endif;
}
我在哪里调用函数:
print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
在过去的一天里,这一直让我发疯,所以任何帮助将不胜感激!谢谢。