2017-03-09 63 views
0

我有此數組的圖片:FOREACH在畫面名稱陣列用PHP

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); 
     } 

在$圖像VAR我存儲我的圖片名稱陣列(如上所列)。

,並在$ DEST我:

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

的$圖像VAR(通過一個完整的路徑前在拍攝每張照片之一:./images/00.jpg)以良好的價值觀,但問題是我的$ 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 

我想要做的就是在$ DEST只獲得:

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

值1/ITER通貨膨脹。

回答

1

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

這應該工作:

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

更新:您$圖像VAR 使用SUBSTR讓你感興趣的字符串只把部分見doc更多的信息。

+0

因此,我會得到./images/03/./images/00.jpg和./images/03/./images/green.png和./images/ 03 /./ images/image.png,不需要第二個./images參數,有辦法摧毀它?看看我想要的$ dest輸出。 –

+0

更新了我對這句話的回答。 – Lescurel

+0

就是這樣,先生,非常感謝! –

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); 
     } 
+0

因此,我會得到./images/03/./images/00.jpg和./images/03/./images/green.png和./images/03/./images/image.png,並且不會需要第二個./images參數,有辦法摧毀它嗎?看看我想要的$ dest輸出。 –

+0

@TatuBogdan編輯我的答案...請檢查 – Naincy

1

你爲什麼concate $ 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); 
    }