Опять интересный вопрос (возможно только для меня

Использую галерею на странице, а изображения находятся на сервере в папке. Каким образом можно по вытаскивать их имена, чтоб можно было вставить в массив образующий подобную структуру:
<img src="img/1.jpg" />
<img src="img/2.jpg" />
<img src="img/3.jpg" />
<img src="img/4.jpg" />
<img src="img/5.jpg" />
буду рад любым решениям или наведения меня на умную мысль!
Спустя 1 минута, 50 секунд (18.12.2011 - 22:21) Игорь_Vasinsky написал(а):
http://php.net/manual/ru/function.opendir.php
и - достаточно хранить имена с путями а тег img с атрибутами использовать в шаблоне как обёртку.
и - достаточно хранить имена с путями а тег img с атрибутами использовать в шаблоне как обёртку.
Спустя 5 минут, 41 секунда (18.12.2011 - 22:27) killer8080 написал(а):
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}
Спустя 4 минуты, 32 секунды (18.12.2011 - 22:31) Winston написал(а):
Примерно так
Спустя 52 секунды Winston написал(а):
killer8080
Если что, то glob можно в переменную всунуть, чтобы не дергать на каждой итерации.
$files = scandir('./img/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./img/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';
Спустя 52 секунды Winston написал(а):
killer8080
Если что, то glob можно в переменную всунуть, чтобы не дергать на каждой итерации.
Спустя 4 минуты, 50 секунд (18.12.2011 - 22:36) Игорь_Vasinsky написал(а):
Спустя 4 минуты, 12 секунд (18.12.2011 - 22:40) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 21:31) |
killer8080 Если что, то glob можно в переменную всунуть, чтобы не дергать на каждой итерации. |
А кто её будет дергать? foreach получит массив, и пробежится по всем элементам.
Спустя 3 минуты, 41 секунда (18.12.2011 - 22:44) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 21:40) |
А кто её будет дергать? foreach получит массив, и пробежится по всем элементам |
Хм... И на каждой итерации не будет опять массива дергать ?
То же самое говорят и о foreach(file('file.txt'), что лучше её запихнуть в переменную за пределами массива, чтобы каждый раз не дергалась.
А с glob() ситуация иная ?

Спустя 3 минуты, 46 секунд (18.12.2011 - 22:48) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 21:44) |
То же самое говорят и о foreach(file('file.txt'), что лучше её запихнуть в переменную за пределами массива, чтобы каждый раз не дергалась. |
Кто говорит? На php.net?
Спустя 47 секунд (18.12.2011 - 22:49) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 21:48) |
Кто говорит? На php.net? |
На этом форуме беседовали об этом.
Спустя 44 секунды (18.12.2011 - 22:49) Joliat написал(а):
Пишу вот так:
говорю сразу, не я придумал, а нашел в нете и подставил свои пути.
но echo говорит мне:
"; } } closedir($opendir); } ?>
что такое не пойму
$opendir = opendir('foto');
while (false !== ($read = readdir($opendir))) {
if ($read != '.' && $read != '..') {
$name = split('.', $read);
echo $name[0];
echo "<img src= \"/foto/$read \" />";
}
}
closedir($opendir);
говорю сразу, не я придумал, а нашел в нете и подставил свои пути.
но echo говорит мне:
"; } } closedir($opendir); } ?>
что такое не пойму
Спустя 2 минуты, 47 секунд (18.12.2011 - 22:52) Winston написал(а):
Joliat
Посмотри на мой пример, или killer8080.
Посмотри на мой пример, или killer8080.
Спустя 2 минуты, 43 секунды (18.12.2011 - 22:55) Joliat написал(а):
делаю:
выводит:
";'), $files); echo '
'.htmlspecialchars(print_r($files, 1)).'
'; ?>
Может это быть связано, что сайт находится на .рф?
$files = scandir('./foto/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./foto/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';
выводит:
";'), $files); echo '
'.htmlspecialchars(print_r($files, 1)).'
'; ?>
Может это быть связано, что сайт находится на .рф?
Спустя 55 секунд (18.12.2011 - 22:56) Winston написал(а):
А ты дескриптор <?php вначале поставил ?
Спустя 1 минута, 6 секунд (18.12.2011 - 22:57) Joliat написал(а):
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}
выдает:
'; } $files = scandir('./foto/'); unset($files[0], $files[1]); $files = array_map(create_function('$item', 'return "";'), $files); echo '
Спустя 1 минута, 38 секунд (18.12.2011 - 22:59) Joliat написал(а):
Цитата |
А ты дескриптор <?php вначале поставил ? |
ну конечно! Не держите меня за лося! я может много-го не знаю но не тупой валенок!
Сейчас код полностью выглядит так:
<?php
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}
$files = scandir('./foto/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./foto/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';
?>
на экране все тоже!
Спустя 1 минута, 16 секунд (18.12.2011 - 23:00) Winston написал(а):
А файл точно с расширением PHP ?
Спустя 58 секунд (18.12.2011 - 23:01) Игорь_Vasinsky написал(а):
Свернутый текст
боже мой
вы не друзья? тут один не давно конструктор сайтов писал - онлайн сервис, не зная как создать файл.

Спустя 15 секунд (18.12.2011 - 23:01) killer8080 написал(а):
Winston
я тут провел эксперемнтик
выдаёт
0.186459064484 : 77268696 bytes
выдаёт
0.545925855637 : 1138528 bytes
второй вариант в 2 раза медленней, но разница в расходе памяти в 10-тки раз
я тут провел эксперемнтик
$arr = range(1, 1000000);
$s = microtime(1);
foreach($arr as $v) echo ' ';
echo (microtime(1) - $s).' : '.memory_get_usage().' bytes';
выдаёт
0.186459064484 : 77268696 bytes
//$arr = range(1, 1000000);
$s = microtime(1);
foreach(range(1, 1000000) as $v) echo ' ';
echo (microtime(1) - $s).' : '.memory_get_usage().' bytes';
выдаёт
0.545925855637 : 1138528 bytes
второй вариант в 2 раза медленней, но разница в расходе памяти в 10-тки раз

Спустя 1 минута, 46 секунд (18.12.2011 - 23:03) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 22:01) |
но разница в расходе памяти в 10-тки раз |
WTF ?

Спустя 1 минута, 26 секунд (18.12.2011 - 23:04) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 22:03) |
WTF ? |
сам в шоке

Спустя 2 минуты, 26 секунд killer8080 написал(а):
Winston
кажется догнал, во втором варианте по завершении цикла память сразу высвобождается, а в первом остаётся переменная. Но насчет скорости, ты пожалуй был прав.

Спустя 5 минут, 4 секунды (18.12.2011 - 23:09) Joliat написал(а):
Цитата |
боже мой blink.gif вы не друзья? тут один не давно конструктор сайтов писал - онлайн сервис, не зная как создать файл. |
))) нет, я маньяк - одиночка!))
А файл точно с расширением PHP ?
Уже да!))) Файл не с нуля создавал, а взял с куском кода и не обратил внимание на разрешение!
Огромное спасибо за подсказку.
Сейчас буду проверять
Спустя 2 минуты, 23 секунды (18.12.2011 - 23:12) Игорь_Vasinsky написал(а):
ну значит юзать первую схему на после использования переменной - обнулять её.
Спустя 3 минуты, 4 секунды (18.12.2011 - 23:15) Joliat написал(а):
$opendir = opendir('foto');
while (false !== ($read = readdir($opendir))) {
if ($read != '.' && $read != '..') {
$name = split('.', $read);
echo $name[0];
echo "<img src= \"/foto/$read \" />";
}
}
closedir($opendir);
Заработало! Всем огромное спасибо!
Спустя 4 минуты, 44 секунды (18.12.2011 - 23:20) Игорь_Vasinsky написал(а):
по теме
а можеть писать в БД загружаемые картинки вместо сканирования
по логике быстрее если отдельная табла с парой столюцов?
а можеть писать в БД загружаемые картинки вместо сканирования
по логике быстрее если отдельная табла с парой столюцов?
_____________
О-о-о-о-о-очень начинающий...