【问题标题】:PHP Renaming Sequentially deletes certain filesPHP重命名顺序删除某些文件
【发布时间】:2014-07-11 13:22:24
【问题描述】:

我正在尝试让 PHP 按顺序重命名目录中的文件列表(1.jpg、2.jpg 等)。每次大约20个文件。通常会缺少一个数字(例如 13.jpg,因此所有内容都需要重新编号。)这就是我需要脚本的目的。以下是我所拥有的作品,除了每次删除图像 2-9.jpg 时。所以如果文件夹里有19个文件,我运行脚本,然后就有1.jpg和10-18.jpg。真的很奇怪?这是可以修复的吗?它可能与覆盖相同的文件名有关吗?奇怪的是,在 10.jpg 之后它工作正常......

$i=1;
foreach (array_filter(glob("../images/gallery/10/*") ,"is_file") as $f){
  rename($f, "../images/gallery/10/".$i.".jpg");
  $i++;
}

谢谢!

【问题讨论】:

  • 那是因为在循环过程中会有一个偏移量已经被用作文件名,因此,替换文件。

标签: php rename sequential


【解决方案1】:

尝试将数组设置在循环之外,并对其进行排序,这样它就会以不会留下任何空白的顺序对其进行解析:

$i=0;
$array = array_filter(glob("../images/gallery/10/*") ,"is_file")
sort($array); // See which type of sort is needed here
foreach ($array as $f){
    rename($f, "../images/gallery/10/". ++$i .".jpg");
}

无论如何,请避免在循环语句中使用函数,因为它将被重新评估。

【讨论】:

    【解决方案2】:
    $i=1;
    foreach (array_filter(glob("../images/gallery/10/*") ,"is_file") as $f){
      if (!file_exists("../images/gallery/10/".$i.".jpg)){
         rename($f, "../images/gallery/10/".$i.".jpg");
      }
      $i++;
    }
    

    【讨论】:

      【解决方案3】:

      感谢您的所有回答!我能够修复它 - 问题与排序有关。我发现 PHP 看到列表以错误的方式排序,例如 1.jpg、10.jpg、11.jpg 等。以下代码修复了它——现在效果很好:

      <?php
      function getFiles(){
          $files=array();
          if($dir=opendir("../images/gallery/10/")){
              while($file=readdir($dir)){
                  if($file!='.' && $file!='..' && $file!=basename(__FILE__)){
                      $files[]=$file;
                  }   
              }
              closedir($dir);
          }
          natsort($files); //sort
          return $files;
      }
          $i=1;
           foreach(getFiles() as $f){
               rename("../images/gallery/10/".$f, "../images/gallery/10/".$i.".jpg");
        $i++;
        }
          ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-04
        • 2017-04-10
        • 2019-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 2020-02-27
        相关资源
        最近更新 更多