0

在“原始”文件夹中,我有名为 1、2、11、33、111 的子文件夹......它们都是数字

此脚本对数组进行排序,然后将第一个文件夹(在本例中为文件夹 1)移动到文件夹“move-here”

一切正常,但它每次移动 2 个文件夹而不是一个,文件夹 1 和 11 在我的第一次尝试中被移动

echo 给了我“已移动文件夹:1”,所以我真的不知道为什么 rename() 正在移动 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/");
4

2 回答 2

0

您的脚本运行良好,我刚刚对其进行了测试,它只移动了一个文件夹。检查您的脚本是否未执行两次。

<?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
    )
于 2013-10-15T03:04:14.977 回答
0

我遇到了类似的问题,但我已经使用整数转换函数修复了它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)."/");
于 2013-10-15T02:46:46.647 回答