2016-09-05 2 views
-2

Этот цикл PHP foreach должен пересекать все изображения, которые были только что загружены в каталог из формы, а затем прикрепить их все к электронной почте и отобразить их по электронной почте. Он работал, когда я первый сделал это пару месяцев назад, но теперь почему-то больше не работает .. Это будет только прикрепить один снимок ..PHP foreach прекратил работать через некоторое время

$files = array(); 
while ($files[] = readdir($dir2)); 
closedir($dir2); 

foreach ($files as $file) { 

    //MANIPULATE FILENAME HERE, YOU HAVE $file... 

    if ($file != "." && $file != ".." && $file != 'resources'){ 
     $withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file); 
     $url = '../mobile_patrol_reports/'.$id.'/'.$file; 
     $mail->AddEmbeddedImage($url, $withoutExt); 
     $mail->Body .= '<img src="cid:'.$withoutExt.'">'; 
     break; 
    } 

} 

Может быть, это было что-то делать с добавлением SSL сертификата и я мог что-то упустить?

+3

Распад прекращает выполнение – Neat

+0

Посмотрите 'Pathinfo()', а вместо загрузки целый движок регулярных выражений, чтобы сделать что-то, что можно сделать достаточно просто без регулярных выражений. – RiggsFolly

+0

Добавили ли вы еще один каталог, а также «ресурсы», которые вы не проверяете? – RiggsFolly

ответ

4

Это как-то связано с break;, которое у вас есть в вашей петле foreach. В первый раз условие в if истинно, break приведет к прекращению выполнения foreach.

http://php.net/manual/en/control-structures.break.php

+0

Когда разрыв не включен, он добавляет первое изображение дважды –

+0

Тогда вы должны искать ошибку в логике. Очевидно, что добавление 'break' не является ответом здесь. –