使用php在图片名称数组中的Foreach

时间:2017-03-09 09:45:18

标签: php arrays

我有这一系列图片:

array(3) { [0]=> string(15) "./images/00.jpg" [1]=> string(18) "./images/green.png" [2]=> string(18) "./images/image.png" } string(27) "./images/03/./images/00.jpg"

图片数量和名称当然会有所不同,因为会不断删除/添加新图片。

我使用这个foreach循环所有名称:

foreach($images as $image){
            $dest = $dest."/".$image;
            copy($image, $dest);
            unlink($image);
        }

在$ images var中我存储了我的图像名称数组(如上所列)。

在$ dest中我有:

$dest = "./images/".$month;
$month = date("m");

$ image var取得了很好的价值(每张图片都是一个完整的路径ex:./ images / 00.jpg),但问题是我的$ dest var我会得到

./images/03/./images/00.jpg       //first iteration
./images/03/./images/00.jpg/./images/green.png     //second iteration
./images/03/./images/00.jpg/./images/green.png/./images/image.png  //third

我想要做的只是进入$ dest:

 ./images/03/00.jpg 
 ./images/03/green.png
 ./images/03/image.png

1值/迭代。

3 个答案:

答案 0 :(得分:1)

您必须在每次迭代中重新初始化$ dest变量。

这应该有效:

foreach($images as $image){
        $dest = "./images/".$month."/".substr($image,strlen("./images/"));
        copy($image, $dest);
        unlink($image);
    }

更新 在$ image var上使用substr只获取您感兴趣的字符串部分。有关更多信息,请参阅doc

答案 1 :(得分:1)

$dest = $dest."/".$image;

在上面的声明中,它将在下次未初始化$dest变量时首次正常工作,它将采用先前的值。

所以,你可以用下面的其他方式做同样的事情。

foreach($images as $image){
            $img_name = explode('/', $image);
            $dest = "./images/". date("m") ."/".$img_name[2]; // ./images/03/00.jpg
            copy($image, $dest);
            unlink($image);
        }

答案 2 :(得分:1)

为什么你联合 $ dest 变量。这就是它返回以下结果

./images/03/./images/00.jpg       //first iteration
./images/03/./images/00.jpg/./images/green.png     //second iteration
./images/03/./images/00.jpg/./images/green.png/./images/image.png  //third

您可以使用pathinfo()功能来执行您想要的操作。看看下面......

$month=date('m');
foreach($images as $image){
      $image_details=pathinfo($image);//The pathinfo() function returns an array that contains information about a path.
      $dest = $image_details['dirname']."/".$month."/".$image_details['basename'];
      copy($image, $dest);
      unlink($image);
    }