繁体   English   中英

php named()正在移动两个文件夹,而不是一个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM