<?php
$extension = array('*.jpg', '*.jpeg', '*.png', '*.bmp', '*.gif');
foreach ($extension as $current_extension)
{
$images = glob('pictures/' . $current_extension);
foreach ($images as $image)
{
$img_name = explode('/', $image);
$img_name = $img_name[1];
echo "<p><img src=\"$image\"><br>
<tt>$img_name</tt><br>
<a href=\"remove-picture.php?$img_name\">Удалить</a></p><hr><br>";
}
}
?>
Вывод изображений работает, но вместе с ним внизу появляются
Warning: Invalid argument supplied for foreach() in /srv/http/g/pictures.php on line 44
Warning: Invalid argument supplied for foreach() in /srv/http/g/pictures.php on line 44
Файлы в директории с картинками:
- 541.jpg
- DX-Winter-Snow-Screensaver_1.png
- peluche-php.jpg
- php.png
- poets_walk_winter-fm1.jpg
- win1ter.jpg
- winter1.jpg
- winter_depression1.jpeg
- winter.jpg
- winter-scene.jpg
Спустя 2 часа, 29 минут, 53 секунды (2.07.2012 - 18:13) inpost написал(а):
$images = массив, по крайней мере должен быть.
Перед запуском цикла проверяй на is_array и count() - ведь хотя бы 1 элемент должен быть для того, чтобы запустить внутренний цикл.
Перед запуском цикла проверяй на is_array и count() - ведь хотя бы 1 элемент должен быть для того, чтобы запустить внутренний цикл.
Спустя 6 минут, 2 секунды (2.07.2012 - 18:19) alex455 написал(а):
А какой функцией не допустить итерацию в случае пустого массива?
Так не работает. Всё тоже самое получается на выводе.
foreach ($extension as $current_extension)
{
$images = glob('pictures/' . $current_extension);
if (count($images) < 1) break; # ---------------------------------------------- тут
foreach ($images as $image)
{
$img_name = explode('/', $image);
$img_name = $img_name[1];
echo "<p><img src=\"$image\"><br>
<tt>$img_name</tt><br>
<a href=\"remove-picture.php?$img_name\">Удалить</a></p><hr><br>";
}
}
Так не работает. Всё тоже самое получается на выводе.
Спустя 4 минуты, 45 секунд (2.07.2012 - 18:23) inpost написал(а):
ты пропустил то, что я сказал 
К тому же надо не обрывать цикл полностью, а лишь 1 инерцию.

К тому же надо не обрывать цикл полностью, а лишь 1 инерцию.
Спустя 31 минута, 6 секунд (2.07.2012 - 18:55) alex455 написал(а):
inpost, я не пропустил is_array, я просто не знаю, как его тут использовать можно.
Цитата |
К тому же надо не обрывать цикл полностью, а лишь 1 инерцию. |
Как бы ты это сделал?
Спустя 22 минуты, 4 секунды (2.07.2012 - 19:17) ИНСИ написал(а):
foreach (glob('pictures/*.{jpg,jpeg,png,bmp,gif}') as $data) {
echo $data . '<br />';
// и т.д. что тебе необходимо сделать с этими файлами
}
Спустя 9 минут, 38 секунд (2.07.2012 - 19:26) inpost написал(а):
if(is_array($var) && count($var)) {
//вывод
}
А второй вопрос: что такое break; и какая есть альтернатива для прекращения лишь 1 инерции цикла? Первая буква c... , вторая o... третья n...
Спустя 1 час, 28 минут, 35 секунд (2.07.2012 - 20:55) alex455 написал(а):
Разобрался, спасибо.
foreach ($extension as $current_extension)
{
$images = glob('pictures/' . $current_extension);
if (!is_array($images)) continue; # и count() не нужен.
foreach ($images as $image)
{
$img_name = explode('/', $image);
$img_name = $img_name[1];
echo "<p><img src=\"$image\"><br>
<tt>$img_name</tt><br>
<a href=\"remove-picture.php?$img_name\">Удалить</a></p><hr><br>";
}
}
Спустя 1 минута, 50 секунд (2.07.2012 - 20:57) inpost написал(а):

Спустя 1 час, 28 минут, 27 секунд (2.07.2012 - 22:25) ИНСИ написал(а):
alex455 интересно чем мой вариант не подходит? Быстрее, лучше и компактнее )
Спустя 12 часов, 45 минут, 19 секунд (3.07.2012 - 11:10) alex455 написал(а):
Он не сработал. Жаловался, что glob('pictures/*.{jpg,jpeg,png,bmp,gif}') - неверный параметр для foreach.
Спустя 47 минут, 12 секунд (3.07.2012 - 11:58) ИНСИ написал(а):
foreach (glob('pictures/*.{jpg,jpeg,png,bmp,gif}', GLOB_BRACE) as $data) {
echo $data . '<br />';
// и т.д. что тебе необходимо сделать с этими файлами
}
Попробуй так. Я забыл GLOB_BRACE дописать
Спустя 46 минут, 47 секунд (3.07.2012 - 12:44) alex455 написал(а):
ИНСИ, да, работает. Вот теперь не знаю, какой вариант использовать - с шоколадом или ванилью.

Спустя 1 час, 26 минут, 52 секунды (3.07.2012 - 14:11) ИНСИ написал(а):
Цитата |
с шоколадом или ванилью |
Ну, второй вариант - шоколад с солью )
Спустя 10 минут, 3 секунды (3.07.2012 - 14:21) inpost написал(а):
alex455
Бери банан с перцем!
А вообще, если попадаешь в такую ситуацию - делай замеры на скорость работы.
Бери банан с перцем!
А вообще, если попадаешь в такую ситуацию - делай замеры на скорость работы.