我在一个文件夹里有很多文件。我想在不覆盖一个文件的情况下重命名它们。
假设这些是我的文件名:
我得到了一个数组,告诉我哪些文件要重命名。
array(
"Maria.php" => "Ioana.php",
"Bianca.php" => "Cristina.php",
"Ioana.php" => "Daniela.php"
)
这就是一个例子 Ioana.php
被覆盖了。因为... Maria.php
"想要 "这个名字。
还是说说这个例子吧。
array(
"Maria.php" => "Ioana.php",
"Ioana.php" => "Maria.php"
)
这个例子中的文件想改名。
我需要一个解决方案,无论什么文件应该被重命名,它们永远不会覆盖文件夹中的另一个文件。每次需要重命名的文件数量可能不同。
我需要对所有的数组文件进行重命名。问题是如何在不覆盖的情况下做到这一点。
文件的名称非常重要。添加一个时间戳后缀不是一个好的解决方案。
使用 file_exists($filename)
在你重命名你的文件之前,检查他是否存在,如 。
<?php
while(count($arr) > 0)
{
foreach ($arr as &$value) {
if (file_exists($value)) {
rename($value,$value + "temp");
}
rename(array_search($value,$arr),$value);
unset($tab[array_search($value, $arr)]);
}
}
?>
你只需要在你的数组中循环,直到所有的文件都被重命名。