Ek dosyaların neden PHP scandir

5 Cevap

I ekstra değerler almak PHP kullanarak scandir kullandığınızda neden olduğunu

$portID = $this->id;
$dir = '/home/sites/mydomain.com/public_html/public/images/'.$portID;
$contents = scandir($dir);

I klasörde aslında daha fazla değer üreten işlevi hakkında bilmiyorum bir şey var mı?

5 Cevap

Pekka yanıt ile yanlış bir şey var; Ben sadece bir daha bildirge ve mockable gerçekleştirilmesini eklemek SPL olacak:

class DirectoryFilterDots extends RecursiveFilterIterator
{
    function __construct($path)
    {
        parent::__construct(new RecursiveDirectoryIterator($path));
    }

    function accept()
    {
        return !$this->getInnerIterator()->isDot();
    }

    function key()
    {
        return $this->getInnerIterator()->getPathname();
    }
}

Burada opendir kullanarak alternatif bulunuyor

$dir = "/your/path";
if (is_dir($dir)) {
    if ($d = opendir($dir)) {
           while (($file = readdir($d)) !== false) {
                if ( $file != "."  && $file != ".." ){
                    echo "filename: $file \n";
                    $files[]=$file;
                }
           }
        closedir($d);
    }
}

Eğer scandir () kullanmakta ısrar ederseniz, o zaman (scandir tarafından döndürülen dosya dizi geçmesi için bir döngü) kullanın ve sonra diziden istemeyen kaldırmak

Bu ayrı bir yanıt olması gerekir bu yüzden just somebody 's cevap yorumlamak için yeterli temsilcisi yok. PHP 5.3 olarak DirectoryIterator uzanır ve varsayılan nokta dosyaları atlar FilesystemIterator hangi vardır.

Ne kadar zor bir yol insanlar . ve .. kaldırmak için takip ediyoruz. İşte bunu yapmak için en kolay yoludur.

$path = '/some/path/';
$contents = array_diff(scandir($path), array('.', '..', '.DS_Store'));

Bu buraya ulaşmak birine yardımcı olur umarım. Teşekkürler!

Bu scandir gerçek çıkışı () olmadan söylemek zor olsa da, ben size ek . ve .. girişleri demek sanırım.

Onlar da manual örneklerde görünür. Onları elle filtre olacaktır.

. refers to the current directory .. refers to the parent directory.

Bu gelenek tam olarak tarihsel, bilmiyorum Unix dünyasında, geliyor. Ben hızlı bir şekilde ls her çağrısı üzerine güncel ve üst dizinler için izinleri görmenizi sağlar çünkü sanırım.