如何从 for 循环中以递增的方式将文件名存储在 php 变量中


How can I store filename in php variable in incremented way from for Loop

如果我的标题有误,很抱歉。

让我在这里详细解释一下。

我想将每个文件名按数字存储在php变量中,例如

$image0 = filename.jpg
$image1 = filename.jpg
$image2 = filename.jpg
$image3 = filename.jpg

等等..

这个文件名.jpg是从 for 循环生成的,下面是我的代码、当前 OP 和预期的 OP。

$t = glob("/var/www/localhostmyproject.com/media/catalog/product/uploads/".$productnumber."/".$productnumber."*", GLOB_BRACE);
            print_r($t);
            for ($i = 0; $i <= 5; $i++) {
            //$t =asort($t);
            $proinfo = $t[$i];
            $path_parts = pathinfo($proinfo);
            echo $path_parts['basename'], "'n";
            echo $imagename = "/uploads/".$productnumber."/".$path_parts['basename']."'n'n";
            }

当前操作

 Array
(
    [0] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228a.jpg
    [1] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228b.jpg
[2] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228c.jpg
    [3] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228d.jpg
}
8573228a.jpg
/uploads/8573228/8573228a.jpg
8573228b.jpg
/uploads/8573228/8573228b.jpg
8573228c.jpg
/uploads/8573228/8573228c.jpg
8573228d.jpg
/uploads/8573228/8573228d.jpg

预期操作

 Array
    (
        [0] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228a.jpg
        [1] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228b.jpg
        [2] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228c.jpg
        [3] => /var/www/localhostmyproject.com/media/catalog/product/uploads/8573228/8573228d.jpg
    }
    8573228a.jpg
    /uploads/8573228/8573228a.jpg
$image0 =  "/uploads/8573228/8573228a.jpg";

    8573228b.jpg
    /uploads/8573228/8573228b.jpg
$image1="/uploads/8573228/8573228b.jpg";
    8573228c.jpg
    /uploads/8573228/8573228c.jpg
$image2="/uploads/8573228/8573228c.jpg";
    8573228d.jpg
    /uploads/8573228/8573228d.jpg
$image3="/uploads/8573228/8573228d.jpg";

所以我可以在 mysql 查询中使用这个变量$image0,$image1,$image2,$image3来插入数据。

我试图在echo $imagearr之后在循环中添加这一行。但它没有显示预期的OP。

echo $image.$i = $path_parts[filename].$i."'n";

请让我知道我该如何实现这一目标。

编辑

$imagearr变量名称更新为 $imagename 。它可能会让其他人混淆数组$t

**

您可以通过分配动态变量(Darren 正确注释的变量变量)来实现它,如下所示:

$files = ['sunset.jpg', 'moon.jpg', 'jupiter.png', 'banana.gif'];
$count = 0;
foreach($files as $file) {
 ${'file' . $count} = $file;
 $count++;
} 
// output gives you 4 strings
var_dump($file0, $file1, $file2, $file3);

由于您已经获得了多个文件名和上传目录路径,因此您只需要分配给一个自动增量变量

你只需要添加这个:

echo $image.$i=$imagename; // it will give desired output '$image2="/uploads/8573228/8573228c.jpg";'

您的完整代码:

$t = glob("/var/www/localhostmyproject.com/media/catalog/product/uploads/".$productnumber."/".$productnumber."*", GLOB_BRACE);
        print_r($t);
        for ($i = 0; $i <= 5; $i++) {
        //$t =asort($t);
        $proinfo = $t[$i];
        $path_parts = pathinfo($proinfo);
        echo $path_parts['basename'], "'n";
        echo $imagename= "/uploads/".$productnumber."/".$path_parts['basename']."'n'n";
        echo $image.$i = $imagename; // it will give desired output '$image2="/uploads/8573228/8573228c.jpg";'
        }

试试这个例子:

<?php
$array = array("variable1" => "value1","variable2" => "value2", "variable3" => "value3");
extract($array);
var_dump($variable1);
var_dump($variable2);
var_dump($variable3);
?>

输出:

string(6) "value1" string(6) "value2" string(6) "value3" 

在您的情况下,以下代码应该有效:

$t = glob("/var/www/localhostmyproject.com/media/catalog/product/uploads/".$productnumber."/".$productnumber."*", GLOB_BRACE);
$images = array();
            for ($i = 0; $i <= 5; $i++) {
            $proinfo = $t[$i];
            $path_parts = pathinfo($proinfo);
            $imagename = "/uploads/".$productnumber."/".$path_parts['basename'];
            $images['image'.$i] = $imagename;
            }
            extract($images);
            var_dump($image0);
            var_dump($image1);
            var_dump($image2);
            var_dump($image3);
            var_dump($image4);
            var_dump($image5);
?>

把它放在你的代码中,你可以得到输出:

echo $imagearr = "/uploads/".$productnumber."/".$path_parts['basename']."'n'n";
echo $image.$i=$imagearr;