2012-06-08 2 views
1

Я пытаюсь сортировать список opendir(), чтобы он мог отображать информацию в том порядке, который я назвал.PHP-файл для сортировки PHP:

Каждый файл в каталоге называется 1_something.php, 2_something.php, 3_something.php и т. Д. Эти файлы представляют собой небольшие фрагменты шаблонов html, которые я изменяю на все, что мне нужно, чтобы сказать.

Я использую следующий код, чтобы тянуть и показать эти файлы:

$dir = "./portfolio"; 
if($handle = opendir($dir)) { 
    while($file = readdir($handle)) { 
     clearstatcache(); 
     if(is_file($dir.'/'.$file)) { 
      include("portfolio/".$file); 
     } 
    } 
closedir($handle); 
} 

Я играл вокруг с созданием массива имен и их сортировки, хотя я предполагаю, что я не знаю, где именно массив происходит, где происходит сортировка и где происходит фактическое отображение информации.

Заранее спасибо.

+0

Ваш 'clearstatcache()' может быть за пределами вашего цикла кстати :) –

+0

Спасибо Джек, я думаю, что лучше всего назвать это один раз, когда это необходимо, а? – ntgCleaner

ответ

0

Заслуга @SiGanteng на этом одном

Я просто должен был добавить еще одну строку, чтобы убедиться, что он смотрел только на реальных файлов: Код Ниже

$dir = "./portfolio"; 
$files = scandir($dir); // returns array of files, sorted alphabetically 

foreach($files as $file) { 
    if(is_file($dir.'/'.$file)) { 
     include("portfolio/".$file); 
    } 
} 

Это самый простой способ вернуть результаты в порядке возрастания.
Еще раз спасибо SiGanteng

1

Хм, что-нибудь, препятствующее использованию scandir?

http://sg.php.net/manual/en/function.scandir.php

$files = scandir($dir); // returns array of files, sorted alphabetically 
foreach($files as $file) { 
    // your code 
} 
+0

Это несколько работает, хотя я получаю такие ошибки, как Внимание: include() [function.include]: Не удалось открыть «портфолио/..» для включения (include_path = '.:/Usr/lib/php5) он ищет файл под названием портфолио/.. Я попробую добавить в это сообщение «если это файл» завтра утром – ntgCleaner

+0

Хорошо, я создал операторы быстрого if, код выглядит вот так: '$ dir = "./portfolio"; $ files = scandir ($ dir); // возвращает массив файлов, отсортированный по алфавиту foreach ($ files as $ file) { \t if ($ file! == "." && $ file! == "..") { \t включить ("портфолио/.»$ файл); \t} } ' Как вы думаете? Это вообще проблема? – ntgCleaner

+0

@ntgCleaner Выглядит хорошо для меня :) –

Смежные вопросы