[英]php rename() is moving two folders instead of one
在“原始”文件夹中,我有一个名为1、2、11、33、111的子文件夹...它们都是数字
该脚本对数组进行排序,然后将第一个文件夹(在本例中为文件夹1)移动到文件夹“ move-here”
一切正常,但是每次都移动2个文件夹,而不是一个,我第一次尝试移动文件夹1和11
echo给我“移动文件夹:1”,所以我真的不知道为什么named()移动了2个文件夹?
$wallpapers = array_map('basename',glob("/path-to-folder/original/*",GLOB_ONLYDIR));
natsort($wallpapers);
$wallpaper = $wallpapers[0];
if (empty($wallpaper)) {
echo "0 folders in that directory";
die();
}
if (!file_exists("/path-to-folder/original/$wallpaper")) {
echo "folder does not exist";
die();
}
echo "moved folder: $wallpaper";
rename("/path-to-folder/original/$wallpaper/","/path-to-folder/move-here/$wallpaper/");
我曾经遇到过类似的问题,但是我已经使用整数转换函数intval()
修复了它。 php排序在某些情况下也有类似的问题。
rename("/path-to-folder/original/$wallpaper/","/path-to-folder/move-here/$wallpaper/");
至
rename("/path-to-folder/original/".intval($wallpaper)."/","/path-to-folder/move-here/".intval($wallpaper)."/");
您的脚本运行良好,我刚刚对其进行了测试,它只能移动一个文件夹。 检查脚本是否两次没有被执行。
<?php
$wallpapers = array_map('basename',glob("./folder1/*",GLOB_ONLYDIR));
natsort($wallpapers);
$wallpaper = $wallpapers[0];
if (empty($wallpaper)) {
echo "0 folders in that directory";
die();
}
if (!file_exists("./folder1/$wallpaper")) {
echo "folder does not exist";
die();
}
echo "moved folder: $wallpaper";
rename("./folder1/$wallpaper/","./folder2/$wallpaper/");
$data = scandir("./folder2/");
echo "<pre>";print_r($data);
扫描目录的结果:
Array
(
[0] => .
[1] => ..
[2] => 1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.