PHP ile bir dizindeki tüm dosyaların isimlerini alma

5 Cevap php

Nedense, ben bu kod ile dosya adları için '1 'almaya devam:

if (is_dir($log_directory))
{
    if ($handle = opendir($log_directory))
    {
        while($file = readdir($handle) !== FALSE)
        {
            $results_array[] = $file;
        }
        closedir($handle);
    }
}

Ben $ results_array her öğe yankı zaman, '1 'nin bir demet değil, dosyanın adı olsun. Nasıl dosyaların adı alabilirim?

5 Cevap

Açık / readdir ile rahatsız ve bunun yerine glob() kullanmayın:

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

Sadece kullanmak glob('*'). İşte Documentation

Sen parantez ile $file = readdir($handle) çevreleyen gerekir.

Buyrun:

$log_directory = 'your_dir_name_here';

$results_array = array();

if (is_dir($log_directory))
{
        if ($handle = opendir($log_directory))
        {
                //Notice the parentheses I added:
                while(($file = readdir($handle)) !== FALSE)
                {
                        $results_array[] = $file;
                }
                closedir($handle);
        }
}

//Output findings
foreach($results_array as $value)
{
    echo $value . '<br />';
}

Ben bu todo küçük kodu vardır:

$path = "Pending2Post/";
$files = scandir($path);
foreach ($files as &$value) {
    echo "<a href='http://localhost/".$value."' target='_black' >".$value."</a><br/>";
}

Bu operatör precidence nedeniyle olduğunu. Bunu değiştirmeyi deneyin:

while(($file = readdir($handle)) !== FALSE)
{
    $results_array[] = $file;
}
closedir($handle);