2014-02-04 3 views
0

У меня есть PHP-скрипт, который читает каталог изображений и выдает результаты поиска пользователей.PHP-функция - заказ списка файлов readdir нечетный

Мне нужно найти способ сортировки этих результатов поиска из каталога, я знаю, что вы можете использовать natsort() для массива, но это не помогает, поскольку результаты не находятся в массиве, просто оператор while.

Кто-нибудь знает, возможно ли это? Или, может быть, было бы легче адаптировать мой код, чтобы сначала добавить имена файлов в массив?

<?php 
    $dir = get_post_meta($post->ID, "Library", true); 
    // Open a known directory, and proceed to read its contents 
    if (is_dir($dir)) { 
     if ($dh = opendir($dir)) { 
      while (($file = readdir($dh)) !== false) { 
       if(stristr($file,$_POST['image_search'])){ 
        echo ('<li><div class="thumb-contain"><a href="/'.$dir . $file.'" class="photo-link" rel="attachment"><img src="/asset-thumbs/'. $file .'" /></a><br/><p><a href="/'.$dir . $file.'" class="photo-link" target="_blank">View image</a> | <a href="/download.php?download_file='.$dir . $file.'">Download image</a> <p>'. $file .'</p></div></li>'); 
       } 
      } 
      closedir($dh); 
     } 
    } 
    ?> 

Ok я получил это работает, добавив результаты в массив - Я не волшебник PHP, так что если кто-то видит, что-нибудь, что может быть чище, что было бы фантастическим, в противном случае спасибо за вашу помощь.

<?php 
$dir = get_post_meta($post->ID, "Library", true); 
// Open a known directory, and proceed to read its contents 
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      if(stristr($file,$_POST['image_search'])){ 
       $files[] = $file; 
      } 
     } 
     closedir($dh); 
     natsort($files); 
      foreach($files as $file) { 
       echo ('<li><div class="thumb-contain"><a href="/'.$dir . $file.'" class="photo-link" rel="attachment"><img src="/asset-thumbs/'. $file .'" /></a><br/><p><a href="/'.$dir . $file.'" class="photo-link" target="_blank">View image</a> | <a href="/download.php?download_file='.$dir . $file.'">Download image</a> <p>'. $file .'</p></div></li>'); 
      } 
    } 
} 
?> 
+0

Почему бы не перебрать результат readdir и не добавить элементы в массив. Затем отсортируйте этот массив? –

ответ

0

Вы можете использовать функцию scandir (string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]]) - возвращает массив и поддержку сортировки в качестве опции.