循环并重命名 php 中的所有子文件夹

loop and rename all subfolders in php

我正在努力寻找有关遍历文件夹中的所有子文件夹并使用 PHP 重命名它们的任何信息。我正在重命名它们,这样我就不会达到子文件夹数量的任何限制。

目前我的用户文件夹结构如下:

images/logos/1216/logo.jpg
images/logos/11437/logo.jpg
images/logos/234438/logo.jpg

所以我想遍历 'logos' 中的所有文件夹并将它们重命名如下:

images/users/1/1216/logos/logo.jpg
images/users/11/11437/logos/logo.jpg
images/users/234/234438/logos/logo.jpg

为了计算新的子文件夹名称,我将使用现有的用户 ID(即 11437 除以 1000)。

实际问题是如何遍历所有子文件夹以及重命名文件夹结构的最佳方法。

如果我对这里第一行代码的看法是正确的,那么您应该得到一个类似于第二行的数组。首先测试并备份您的文件。

这应该列出所有用户 ID 或目录并循环遍历它们。
如果复制成功 (true),它将取消旧文件的链接,否则 returns 一条错误消息。

This is untested code

//$arr = array_filter(glob('images/logos/*'), 'is_dir');
$arr = array("images/logos/1216","images/logos/11437","images/logos/234438");
//var_dump($arr);

foreach($arr as $dir){
    $UID = str_replace("images/logos/", "", $dir);
    $newpath = "images/users/" . floor($UID/1000) . "/" . $UID . "/logos/logo.jpg";
    $oldpath = $dir . "/logo.jpg";
    if(copy($oldpath, $newpath)){
        unlink($oldpath);
    }else{
        echo "error with file " . $oldpath . "<br>\n";
        $error = true;
    }
}

if(!$error) unlink("images/logos");

编辑;刚刚注意到我最近使用 Excel 太多了。将 & 更改为 .
编辑2;现在在我自己的页面上测试了代码,似乎是 glob returns 路径。包含用于获取用户 ID 的代码。