basename()这个函数就可以读出不带后缀的文件名了。
存到数组了,按大到小排序,如果数据加后缀名等于文件,就改名,把改过的弹出数组。

解决方案 »

  1.   

    $ar = glob('*.txt'); //读取文件名
    natsort($ar); //按自然顺序排序
    $ar = array_reverse($ar); //转置数组
    foreach($ar as $fname) {
     ....//改名操作
    }
      

  2.   

    我想到的是这样的递归函数,唠叨看看如何:function a($id){
      if(!file_exists($id.".txt")) break;
      a($id+1);rename($id.".txt",($id+1).".txt");
    }
      

  3.   

    1、break 跳到哪里?
    2、改名前需检查目标文件是否存在,否则可能发生错误。而你没有做
    3、如果是文件$id.".txt"不存在则返回的话,那么当$id不连续的时候则大于$id的部分将不会被改名
      

  4.   

    1、break应该改为return。
    2、是的,但是它这个是保证顺序递增1的。
    3、同上。试验证明这个可以的。之前不解的是没有想到可以先递归后改名。不过唠叨的代码受教了。