Sıralamak için diziye dönüştürmek

3 Cevap

Ben bir dizinde tutulan metin dosyalarının içeriğini çıktılar aşağıdaki kodu var.

PHP sort komutuyla bakarak ive ancak aşağıdaki kod ile çalışmak için alınamıyor, ben genelde girdi bir dize değil, bir dizi olmakla ilgili bir hata alıyorum.

Onlar çıkış olmadan önce nasıl dosya dizini sıralayabilirsiniz?

   $directory = "polls/";
    $dir = opendir($directory);


    while (($file = readdir($dir)) !== false) {

      $filename = $directory . $file;
      $type = filetype($filename);
      if ($type == 'file') {
      $contents = file_get_contents($filename);
      list($tag, $name, $description, $text1, $text2, $text3, $date) = explode('¬', $contents);

      echo '<table width="500" border="1" cellpadding="4">';
      echo "<tr><td>$tag</td></tr>\n";
      echo "<tr><td>$name</td></tr>\n";
      echo "<tr><td>$description</td></tr>\n";
      echo "<tr><td>$text1</td></tr>\n";
      echo "<tr><td>$text2</td></tr>\n";
      echo "<tr><td>$text3</td></tr>\n";
      echo "<tr><td>$date</td></tr>\n";
      echo '</table>';

      }
    }
    closedir($dir);

3 Cevap

Başka bir olasılık glob() ile dosya adlarını getiriliyor. Onun çıkış varsayılan olarak sıralanır.

<?php

foreach(glob('polls/*.txt') as $file){
    // ...
}

?>

Öncelikle, bir dizi girişleri toplamak sıralamak ve daha sonra onu söndürmek:

$directory = "polls/";
$dir = opendir($directory);
$files = array();
while (($file = readdir($dir)) !== false) {
    $files[] = $file;
}
closedir($dir);
sort($files);

foreach ($files as $file) {
    // content of your original while loop
}

While döngüsünde yazdırmak, ama bir dizide saklamayın. Diziyi sıralamak ve sonra yazdırın.

(Php.net üzerinde size ihtiyacınız sıralama yöntemi almak için yeterince farklı sıralama işlevleri bulabilirsiniz.)