簡體   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