Вывод последнего созданного файла

  • Автор темы Alien193
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Alien193

Гость
#1
Сидел химичил, видимо сильно глубоко копать начал, клад находится где-то на поверхности :)
В общем мне нужно из папки (в ней есть подпапки) вытащить 1 файл который создан самым последним по дате и времени.
Вот, код, который шарит по папкам, ищет файлы, узнает у них дату создания и выводит. Файлы например типа test.html
PHP:
function arr_max($arr)
{
$count = count($arr);
if($count == 0) unset($count);
for ($i = 0; $i<$count; $i++){
if ($arr[$i] > $max['int']) 
$max['int'] = $arr[$i];
}
if ($i == 0) unset($i);
$max['id'] = $i;
if (empty($max['id'])) unset($max['id']);
return $max;
}
function ListDir($path) {
$path = (substr($path,-1)=='/') ? $path:$path.'/';
$dh = opendir($path);
while ( ($item = readdir($dh) ) !== false) {
$item = $path.$item;
if ( (basename($item) == "..") || (basename($item) == ".") )
continue;
$type = filetype($item);
if ($type == "dir")
ListDir($item);
else {
$i++;
$files['time'][$i] = filectime($item);
$files['name'][$i] = $item;
}
}
closedir($dh);
$max = arr_max($files['time']);
echo file_get_contents($files['name'][$max['id']]);
}
ListDir('folder');
Прошу разобраться, почему он выводит 2 файла?
 
N

nws

Гость
#2
Код:
<?php
//NABRASAL KOD NA SKORUIU RUKU. PROVERI EGO.
$dir = 'puti/do/papki';
$stats = array();
if ($handle = opendir($dir)) {
while (false !== ($filename = readdir($handle))) {
$stats[$filename] = filectime($filename);
}
closedir($handle);
$max = max(array_values($stats));
$tmp = array_keys($stats[$max]);
$last_file = $tmp[0];
echo "File $last_file bil sozdan poslednim v: " . date("F d Y H:i:s.", $stats[$max]);
} else {
echo 'krivoi puti ili net prav';
}
?>
 
A

Alien193

Гость
#3
не работает, хотелось бы учесть что он должен сканировать только файлы да ещё и в подпапках
 
N

nws

Гость
#4
Теперь работает )

PHP:
<?php

$dir = 'puti/do/papki';
$stats = array();
if ($handle = opendir($dir)) {
while (false !== ($filename = readdir($handle))) {
$stats[$filename] = filectime($filename);
}
closedir($handle);

$max = max(array_values($stats));
$stats = array_flip($stats);

echo "File " . $stats[$max] ." bil sozdan poslednim v: " . date("d F Y H:i:s.", $max);
} else {
echo 'krivoi puti ili net prav';
}
?>
хотелось бы учесть что он должен сканировать только файлы да ещё и в подпапках
1.Если is_dir($filename) открываем и читаем все файлы/директории
2 Создаешь массив типа:
PHP:
$arr = array(
'dir_name' => array(
'filename'=>'created_timestamp' 
)
);
3. Перебираешь вышеперечисленный массив.
PHP:
foreach ( $arr as $directories => $files ) {
foreach ($files as $file => $created_timestamp) {
// находишь max от $created_timestamp
}
}
 
Статус
Закрыто для дальнейших ответов.