Появилась у меня проблемка некоторая. Чтение документации не помогло. Если есть время, пожалуйста, ответьте, как отсортировать массив, содержащий названия текстовых файлов по времени создания самих файлов? Надо, чтобы допустим, название файла, который был создан раньше других - был в массиве первым и т.д. PHP: $dir = "upload"; $files = scandir($dir); print_r ($files); print_r ($files) дает результат по имени: А как по дате создания? PHP: $filemtime = filemtime ("$dir/$files[3]"); echo $filemtime; спасибо.
Все-таки, нужно определиться: сортировать по дате создания или дате последнего изменения файла? Думаю, что оптимальным вариатом будет получение многомерного массива, к примеру, такого: Код (Text): array([0] => array('fname'=>'01.txt', 'ftime'=>1801548), [1] => array('fname'=>'02.txt', 'ftime'=>1802548)) далее, используя функцию usort (http://ru2.php.net/manual/ru/function.usort.php), отсортировать данный массив.
Еще, как вариант, можно использовать в качестве ключей дату полследнего изменения, тогда: Код (Text): <?php function scandir_by_mtime($folder) { $dircontent = scandir($folder); $arr = array(); foreach($dircontent as $filename) { if ($filename != '.' && $filename != '..') { if (filemtime($folder.$filename) === false) return false; $dat = filemtime($folder.$filename); $arr[$dat] = $filename; } } if (!ksort($arr)) return false; return $arr; } ?> взял здесь http://ru2.php.net/manual/ru/function.scandir.php#51839, немного изменил, но в этом случае, есть баг - если 2 или более файла были модифицированы в одну и ту же секунду, то они в массив не попадут. В общем, лучше использовать мой вариант, предложенный выше.
egrik! Спасибо большое! Elkaz! Тоже спасибо, но я это уже видел и разобраться не смог. Я только начинаю изучать php. Если чтение документации не помогает и уже сломал весь мозг - спрашиваю здесь, в надежде на полноценнный ответ
egrik много букав. Имя файла всегда уникально - можно юзать в качества ключей массива, время в качестве значений. PHP: <? $dir = "upload"; $files = array(); foreach (scandir($dir) as $file) $files[$file] = filemtime($file); asort($files); $files = array_keys($files); print_r($files);
Так все работает: PHP: <?php $dir = "upload"; $files = array(); foreach (scandir($dir) as $file) $files[$file] = filemtime("$dir/$file"); asort($files); $files = array_keys($files); print_r($files); ?> Самый нормальный вариант, спасибо большое! Ато уже начал придумывать, как это сделать через задницу, но чтобы все работало . Спасибо еще раз!