Php 上传多个文件,如果在 foreach 中不相等则重命名

Php Upload multiple files and rename it if not equal at foreach

我正在尝试上传多个文件示例:

foreach ($_FILES["images"]["error"] as $key => $error) 
        {
            if ($error == UPLOAD_ERR_OK) 
            {
                $name = $_FILES["images"]["name"][$key];

                move_uploaded_file( $_FILES["images"]["tmp_name"][$key], $_SERVER['DOCUMENT_ROOT'].'/var/uploads/'.$product_id . "/" . $_FILES['images']['name'][$key]);

            }
        }   

好的,现在服务器中的文件为 1.jpg、2.jpg、3.jpg、4.jpg、5.jpg.. 直到 24.jpg

现在我正在为每个文件做一个检查,如果我没有重命名,我上传的文件是否有我想要的名字。

$directory = $_SERVER['DOCUMENT_ROOT'].'/var/uploads/' . $product_id . "/";
        $files = glob($directory . "*.jpg");

        foreach($files as $i => $name) 
        {


            $newname = sprintf($directory . "%d.jpg", $i+1);

            if ($newname != $i + 1) 
            {
                rename($name, $newname);
            }
        }

现在的问题是,当我重命名它们时,我得到了这个结果

为什么2.jpg、3.jpg、4.jpg直到9.jpg消失了?

提前致谢!

试试这个..

$directory = $_SERVER['DOCUMENT_ROOT'].'/var/uploads/' . $product_id . "/";

$i = 1;


while (false !== ($file = readdir($directory)))
{
   // check extension
    if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'jpg')
    {

        $newName = $i . '.jpg';
        rename($file, $newName);//rename file

        $i++;
    }
}


closedir($directory)

我找到了答案:)

$directory = $_SERVER['DOCUMENT_ROOT'].'/var/uploads/' . $product_id . "/";
        $files = glob($directory . "*.jpg");

        $i = 1;

        foreach($files as $e => $name) 
        {

            $newname = $directory . $i . ".jpg";

            if($name != $newname)
            {
                rename($name, $newname);

            }
            else
            {
                return 0;
            }

            $i++;
        }