PHP: <?php $dir = dir('images/thumbnails/'); $i = 0; while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $name[$i] = substr($entry,0,10); $i++; } } ?> вот такую вот я хрень написал) парился над нею с трёх часов ночи... но то чего хотел так и не получил((( (так что уровень познаний в PHP у меня не велик) а хочется мне следущего: в папке лежат JPGи, и их имена пишутся в переменную $file (все которые начинаются с 'a' и дальше читает 10 символов) если сделать так PHP: <?php $dir = dir('images/thumbnails/'); $i = 0; while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $name[$i] = substr($entry,0,10); echo $name[$i]; $i++; } } ?> то покажутся все имена этих JPG. а если echo $name[$i], написать после цикла, то ни чего не будет... а я хочу, что бы это можно было сделать в любом мести скрипта... я так предпологаю что его надо запихнуть в массив... но как это сделать:?
Если тебе надо данные в не цикла запиши их в массив PHP: <? $dir = dir('images/thumbnails/'); $i = 0; while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $arr[]=$name[$i] = substr($entry,0,10); echo $name[$i]; $i++; } } ?> А потом разбирай его!
Ну сначала мы присваиваем $name[] номер [0] то есть $i а потом при повторении цикла увеличиваем вообще я это списал с другого скрипта, так что я не полноценный автар! это так сказать плагиат!) но я его уже на столько изучил, что лет через 10 точно вспомню!))) LoL
kuliev Спасибо! CooL Ну вот, так всегда... паришься, паришься... а всё оказывается не так уш и сложно!
После цикла разбирай массив PHP: <? for($i=0; $i<=count($arr)-1; $i++){ echo "<b>".$arr[$i]."</b><br>"; } ?> А лучше почитай информацию про массивы, какие они бывают и что с ними мона делать!
kuliev да я тут всё подрят читаю!))) хотелось по скорей закончить скрипт! скрипт читает каталог с фотками, и формерует под него таблицу и вот что получилось: PHP: <? $dir = dir('images/thumbnails/'); $i = 0; while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $arr[]=$name[$i] = substr($entry,0,10); $i++; } } $IMG = $i; $nTR = $IMG / 5; $head = "<Table width='100%' height='100%' border='1'><tr>"; $narr = 0; echo $head; for ($r = 0; $r < $nTR; $r=$r+1) { for ($n = 0; $n < 5; $n=$n+1) { echo "<td><a href='images/big/".$arr[$narr]."' rel='lightbox[roadtrip]'><img src='images/thumbnails/".$arr[$narr]."' border='0'></a></td>"; $narr++; if ($arr[$narr] == $arr[$IMG]) break; } echo "</TR><TR>"; } echo "</tr></TABLE>"; ?> вот тоже самое с коментами: PHP: <? // открываем директорию $dir = dir('images/thumbnails/'); // переменная $i нужна для массива $name, что бы его в дальнейшем увеличивать ставим значение 0 $i = 0; // цикл: читаме нашу дерикторию, и если файл начинается на симвл "а" то помещаем его в переменную в промежуточный массив $name[] и сразу же помещаем в оснавной массив $arr[] затем увеличиваем переменную $i, и продолжаем цикл, пока не просмотрим все файлы while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $arr[]=$name[$i] = substr($entry,0,10); $i++; } } // переменная $IMG это колличество всех фотографий с которыми мы будем работать, после цикла мы его получаем из переменной $i $IMG = $i; // переменная $nTR будет определять колличество строк <TR> в нашей таблице, получаем его разделив на определённое колличество ячеек в нашей таблице $nTR = $IMG / 5; // как и переменная $i, $narr мы будем увеличивать в цикле $narr = 0; echo "<Table width='100%' height='100%' border='1'><tr>"; //цикл в котором мы определяем сколько рас у нас будут повторяться строки for ($r = 0; $r < $nTR; $r=$r+1) { //цикл в котором мы определяем сколько рас у нас будут повторяться ячейки и увеличиваем каждый цыкл значение $narr, для вставления в каждую новую ячейку следущую фотку for ($n = 0; $n < 5; $n=$n+1) { echo "<td><a href='images/big/".$arr[$narr]."' rel='lightbox[roadtrip]'><img src='images/thumbnails/".$arr[$narr]."' border='0'></a></td>"; $narr++; // если массив $arr[$narr] будет равен колличеству фоток ($IMG) то прекрацаем этот цикл if ($arr[$narr] == $arr[$IMG]) break; } echo "</TR><TR>"; } echo "</tr></TABLE>"; ?> вроде всё работает... я вообще не очень понимаю как использовать for не много по другому, да и ещё много чего... ну надеюсь, это только пока!))) будем учитсо дальше! Всем большое СПАСИБО!!! З.Ы. если есть какието нарикания или пожелания, с удовольствием выслушаю!
ТЫ НАВЕРНОЕ НЕ ПОНИМАЕШЬ ЧТО ТАКОЕ $I; После цикла $i=0 т.к. объявлена до начала цикла PHP: <? echo "<Table width='100%' height='100%' border='1'>"; //цикл в котором мы счетаем количество элементов в массиве, отнимаем 1 так как массив начинается с 0 for ($i = 0; $i <= count($arr)-1; $i++) { //цикл в котором мы определяем сколько рас у нас будут повторяться ячейки и увеличиваем каждый цыкл значение $narr, для вставления в каждую новую ячейку следущую фотку echo "<tr><td><a href='images/big/".$arr[$i]."' rel='lightbox[roadtrip]'><img src='images/thumbnails/".$arr[$i]."' border='0'></a></td></TR>"; } echo "</tr></TABLE>"; ?>
Хм... соглашусь... это очень даже логично! но почему тогда: PHP: <? $dir = dir('images/thumbnails/'); $i = 0; while ($entry = $dir->read()) { if (substr($entry,0,1) == 'a') { $arr[]=$name[$i] = substr($entry,0,10); $i++; } } echo $i; ?> результат будет равен 20, собственно столько же фоток и лежит в папке images/thumbnails/ с буквой "а" в начале:? то есть получается это значение осталось... может быть у меня версяя php не та... или мы всё ещё находимся в цыкле:? не понятно... (((
Тебе просто надо разбить количество картинок на страницу, скажем по 5 на одну страницу. http://www.phpfaq.ru/paginator
Нет, это нифига не логично. После цикла i=20 именно потому что объявлена до начала цикла. Именно поэтому я и сказал, что если echo $name[$i] написать после цикла, то php будет пытаться вывести $name[20], а там ничего нет.
Ацки жжОте! $i++ - это пост-инкрементирование $i - увеличение на единицу. Но даже не это важно. Важно то, что в условии оно выполняется даже на последней итерации после нужных действий (substr и тд). А начианется цикл с 0. А c 0 до 19 = 20 шагов. В последней операции занеслось с индексом 19 ( сиречь 20ый файл). Инкрементировался $i, стал 20. Ессно в массиве 20 элемента нет. БУКВАРЬ.
karakh Да нет, все правильно, только для человека, который не понимает азов, сентенция типа Будет непереводима Я и сам не сразу въехал в смысл
мир объясни мне заодно зачем им понадобилось еще $arr[]=$name[$i] = substr($entry,0,10); ? чем им просто $name не массив?
karakh "Сие науке неизвестно" (c) Может чтобы отработать множественное присвоение ? ___ кстати, substr($entry,0,1) == 'a' это $entry[0] == 'a'
Блин... жесть!) Вот научусь программировать, и напишу программу которая сома всё будет программировать! Нах!)))