Alfabetik dosyaları listeleme (dosyalar ve klasörler hem de)

4 Cevap php

Nasıl bir klasördeki tüm dosyaları ve klasörleri PHP ile alfabetik liste istiyorsunuz?

I-a.txt, b.txt, c dosyalar için aşağıdaki kullanılır ve d.txt, nerede c olan bir klasör. Sorun bir klasör olduğundan c yerine b.txt sonra son görüntülenir olmasıdır.

Ben de her bir dosya veya klasör ya olup olmadığını kontrol edebilmek istiyorum.

<?php
    $dir = opendir ("folders");
    while (false !== ($file = readdir($dir))) {
        echo "$file <br />";
    }
?>

4 Cevap

Gücü glob() size yardımcı olmak için burada. Sadece yapın:

$dir = glob("folders/*");

Sadece yerine hemen baskı ilk bir diziye isimlerini okuyun. Ardından dizi sıralamak ve sonra çıkış yapın.

<?php
$dir = opendir ("folders");
while (false !== ($file = readdir($dir))) {
    $names[] = $file;
}
sort($names, SORT_STRING);
foreach ($names as $name) {
    echo "$name <br />";
}
?>

Ben (opendir vs gerek yok) aşağıdaki kodu öneririm

$entries = glob("*");
sort($entries); // This is optional depending on your os, on linux it works the way you want w/o the sort
var_dump($entries);

/* Output
array(4) {
  [0]=>
  string(5) "a.txt"
  [1]=>
  string(5) "b.txt"
  [2]=>
  string(1) "c"
  [3]=>
  string(5) "d.txt"
}
*/

Sorunuzun secound kısmı için: php "is_file" ve "is_dir" fonksiyonları

Sadece yerine hemen baskı ilk bir diziye isimlerini okuyun. Ardından dizi sıralamak ve sonra çıkış yapın.

<?php
    $files = array();
    $dir = opendir ("folders");
    while (false !== ($file = readdir($dir))) {
        $files[] = $file;
    }
    sort($files);

    foreach ($files as $f)
        echo "$f <br />";
?>