|
автор: Посетитель (29.05.2005 в 21:28) |
|
| есть скрипт
<?php
if ($p=="")
{
$d='1';
}
else
{
$d = $p;
}
$papka = './';
if ($handle = opendir("$papka"))
{
while (false !== ($f = readdir($handle)))
{
if ($f != "." && $f != ".." && $f != ".htaccess" && $f != "index.php")
$file[] = $f;
}
closedir($handle);
}
$count = count($file);
$f = '10';
$obsum = $d * $f;
$nasum = $obsum - $f;
$date=date("d.m.y-H:i");
print "$date<br/>";
print "(Всего файлов - $count)<br/>";
for($i=$nasum; $i< $obsum; $i++)
{
if(!isset($file[$i]))
{
$s=''; break;
}
else
{
$fi = file($file[$i]);
$coun = count($fi);
$fil = substr($file[$i], 0, - 4);
print $fil."-($coun)<br/>";
}
}
if(isset($s))
{
print "<a href=\"index.php?p=1\">Начало</a>";
}else{
$d = $d+1;
print "<a href=\"index.php?p=".$d."\">далее</a>";
}
?>
|
он выводит постранично файлы которые есть в папке.
мне надо чтобы все файлы которые есть в папке отсортировались в порядке убывания по количеству строк в файлах.
все файлы txt
Подскажите плз. | |
|
|
|
|
|
|
|
для: Посетитель
(29.05.2005 в 21:28)
| | Для этого, нужно открыть каждый файл из массива $file и подсчитать число строк, затем сформировать ассоциативный массив, где в качестве ключа выступает имя файла, а в качестве значения число строк в нём и отсортировать с сохранением отношения индекс-значение
<?php
foreach($file as $filename)
{
// Открываем файл при помощи функции
// file, которая возвращает массив,
// каждый элемент которой соответствует
// отдельной строки
$arr = file($filename);
// Подсчитываем число строк в файле
$total = count($arr);
// Массив удаляем
unset($arr);
// Вместо массива $file формируем новый
// массив $filecount, в качестве ключей
// которых используются имена файлов, а
// значений число файлов
$filecount[$filename] = $total;
}
// Массив $filecount сортируем с сохранением
// отношения индекс-значение
asort($filecount);
?>
|
Так как полученный массив $filecount является ассоциативным выводить его лучше при помощи цикла foreach
<?php
foreach($filename as $name => $total)
{
echo "Имя файла - $name, число строк - $total<br>";
}
?>
|
| |
|
|
|
|
автор: посетитель (30.05.2005 в 00:12) |
|
|
для: cheops
(29.05.2005 в 23:13)
| | У вас ошибочка не
<?php
foreach($filename as $name => $total)
{
echo "Имя файла - $name, число строк - $total<br>";
}
?>
|
а
<?php
foreach($filecount as $name => $total)
{
echo "Имя файла - $name, число строк - $total<br>";
}
?>
|
он выводит всё на одну страницу а как мне теперь это впихнуть комне чтоб постранично?
и помоему он сортирует не в порядке убывания.
извените я тока учусь. | |
|
|
|
|
|
|
|
для: посетитель
(30.05.2005 в 00:12)
| | >У вас ошибочка не
Ага есть такое дело...
>и помоему он сортирует не в порядке убывания.
тогда попробуйте отсортировать в другом порядке, т.е. вместо asort использовать arsort
>он выводит всё на одну страницу а как мне теперь это
>впихнуть комне чтоб постранично?
Теперь следует поставить счётчик в цикл и смотреть за ним
<?php
$i = -1;
foreach($filecount as $name => $total)
{
$i++;
if($i <= $nasum) continue;
if($i > $obsum) break;
echo "Имя файла - $name, число строк - $total<br>";
}
?>
|
| |
|
|
|
|
автор: Посетитель (06.06.2005 в 16:45) |
|
|
для: cheops
(29.05.2005 в 23:13)
| | Ещё вопросик
С этим я разобрался!
<?php
foreach($file as $filename)
{
$arr = file($filename);
$total = count($arr);
unset($arr);
$filecount[$filename] = $total;
}
asort($filecount);
?>
А теперь надо бы не просто посчитать строки а только те строки в которых $out[5]
будет равно *-off
я считал так:
$lines = file($fil);
foreach($lines as $line)
{
preg_match("|^([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^\n]+)|i", $line, $out);
if($out[5] == '*-off' )
{
$file[] .= $out[2].",";
}
}
$count = count($file);
|
но мнеже надо посчитать в каждом файле из каталога непойму как | |
|
|
|
|
|
|
|
для: Посетитель
(06.06.2005 в 16:45)
| | А вы откройте каталог при помощи связки функций opendir() + readdir(), так как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4025 и примените к каждому из них ваш скрипт. | |
|
|
|