Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести название последнего файла из папки 
:(
    Опции темы
anrs
Дата 19.8.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Приветствую вас  уважаемые программисты . 

Прошу помощи в коде  :

Код

$desired_extension = 'txt';
$dirname = "../db/"; 
$dir = opendir($dirname); 
while(false != ($file = readdir($dir))) { if(($file != ".") and ($file != "..")) 
{$fileChunks = explode(".", $file);
 if($fileChunks[1] == $desired_extension)
{
 $path = $dirname.$file;
$info = pathinfo($path);
echo $info['filename']."<br>";
} } }
 closedir($dir); 


Данный код выводит название файлов из указанной папки . 

Код выводит файлы по порядку , тобишь если в папке файлы 1 , 2 ,3 ,4,5 .txt 
 
То названия файлов напишутся по возрастанию . 

Вопрос таков , каким кодом можно вывести название только последнего файла ? 

И сразу , если не сложно , как вывести названия по убыванию . Буду очень презнателен .

С уважением anr . 


PM MAIL   Вверх
Avrely
Дата 19.8.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



В массив вбейте все названия файлов, а затем можно получить последний элемент массива или же сортировку настроить.
PM MAIL ICQ MSN   Вверх
anrs
Дата 19.8.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Не могли бы вы показать , как в массиве это сделать ?
PM MAIL   Вверх
bars80080
Дата 19.8.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Avrely @  19.8.2009,  23:41 Найти цитируемый пост)
В массив вбейте все названия файлов, а затем можно получить последний элемент массива или же сортировку настроить. 

т.е.

Код

$desired_extension = 'txt';
$dirname = "../db/"; 
$files = array();
$dir = opendir($dirname); 
while(false != ($file = readdir($dir))) { if(($file != ".") and ($file != "..")) 
{$fileChunks = explode(".", $file);
 if($fileChunks[1] == $desired_extension)
{
 $files[] = $dirname.$file;

} } }
 closedir($dir); 

$c = count($files);

for($i = $count - 1; $i > -1; $i--) {
$info = pathinfo($files[$i]);
echo $info['filename']."<br>";
}

PM MAIL WWW   Вверх
anrs
Дата 20.8.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Прошу прощения , но код не работает , просто пустой лист .
PM MAIL   Вверх
Avrely
Дата 20.8.2009, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



У вас наверное отключен показ ощибок. Надо вставить в начало скрипта 
Код

error_reporting(2047);

Чтобы увидеть в чем оЩибка.




Код

error_reporting(2047);

$desired_extension = 'txt';
$dirname = "../db/"; 
$files = array();
$dir = opendir($dirname); 
while(false != ($file = readdir($dir))) { if(($file != ".") and ($file != "..")) 
{$fileChunks = explode(".", $file);
 if($fileChunks[1] == $desired_extension)
{
 $files[] = $dirname.$file;

} } }
 closedir($dir); 

$c = count($files);

for($i = $count - 1; $i > -1; $i--) {
$info = pathinfo($files[$i]);
echo $info['filename']."<br>";
}

PM MAIL ICQ MSN   Вверх
anrs
Дата 20.8.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Вот :

Notice: Undefined variable: count in Z:\home\localhost\www\1.php on line 19

Добавлено через 4 минуты и 4 секунды
заменил $count на $c и всё заработало . Благодарю )

Добавлено через 8 минут и 26 секунд
А как теперь высчитать и вывести название  последниего файла , тобишь последний по возрастанию ?

PM MAIL   Вверх
skyboy
Дата 20.8.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Код

$dir = '../db';
$all_items = glob($dir . '/*');
$only_dirs = glob($dir . '/*', GLOB_ONLYDIR);
$only_files = array_diff_key($all_items, $only_dirs);
echo array_slice($only_files, -1, 1, true);

может, я и зря для выделения только файлов сделал пересечение массивов. Но в мане по glob не вижу флагов для вывода только файлов.
Цитата(anrs @  19.8.2009,  21:27 Найти цитируемый пост)
И сразу , если не сложно , как вывести названия по убыванию

использовать krsort или rsort, в зависимости от того, в ключах или значениях заданы названия файлов.
PM MAIL   Вверх
anrs
Дата 20.8.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Код

$dir = '../db';
$all_items = glob($dir . '/*');
$only_dirs = glob($dir . '/*', GLOB_ONLYDIR);
$only_files = array_diff_key($all_items, $only_dirs);
echo array_slice($only_files, -1, 1, true);


Этот код выводит на монитор только слово Array ... 
PM MAIL   Вверх
skyboy
Дата 20.8.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(anrs @  20.8.2009,  11:21 Найти цитируемый пост)
echo array_slice($only_files, -1, 1, true);

да, запамятовал. array_slice возвращает array даже при выборе одного элемента.
Код

print_r(array_slice($only_files, -1, 1, true));

PM MAIL   Вверх
anrs
Дата 20.8.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Заработало : 

Код

<?
$dir = '1/';
$all_items = glob($dir . '/*');
$only_dirs = glob($dir . '/*', GLOB_ONLYDIR);
$only_files = array_diff_key($all_items, $only_dirs);
print_r(array_slice($only_files, -1, 1, true));
print "<br>";
print $only_files[3];
?>



На монитор выводтся : 

Array ( [3] => 1//4.txt )
 1//4.txt


А нужно чтобы вывелся просто последний файлик 4.txt в данном случае

Это сообщение отредактировал(а) anrs - 20.8.2009, 13:21
PM MAIL   Вверх
Avrely
Дата 20.8.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Код

<?
$dir = '1/';
$all_items = glob($dir . '/*');
$only_dirs = glob($dir . '/*', GLOB_ONLYDIR);
$only_files = array_diff_key($all_items, $only_dirs);
array_slice($only_files, -1, 1, true);
print str_replace(" 1//", "", $only_files[3]);
?>


А если так?  smile 

Это сообщение отредактировал(а) Avrely - 20.8.2009, 13:35
PM MAIL ICQ MSN   Вверх
anrs
Дата 20.8.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Ага всё работает , благодарю . Спасибо всем за терпеливость по отношению ко мне . 

p.s / Надо перед  1// убрать пробел и всё заработает smile
PM MAIL   Вверх
Avrely
Дата 20.8.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Цитата

p.s / Надо перед  1// убрать пробел и всё заработает 


Сорри  smile 
PM MAIL ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0635 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.