0

私はPHPにかなり慣れていないので、PHPの readdir() を使用して、画像でいっぱいのフォルダーを調べ、そのフォルダーにある画像の数に基づいて動的にレンダリングしています。すべてうまく機能しますが、ローカル マシンの HD に表示される順序で画像が表示されないことに気付きました。

PHPを知っている人への私の質問は、PHPを使用してフォルダーの内容を読み取り、実際のファイル名(01.jpg、02.jpgなど)の名前を変更せずに順番に表示する方法はありますか?

4

5 に答える 5

1

関数を見てくださいglob()。デフォルトでアルファベット順にソートされたファイルを返します。

$files = glob('/some/path/*.*');

おまけに、画像だけをフィルタリングして、ディレクトリを除外できます。

于 2012-09-01T23:14:26.690 に答える
0

これが、私自身の質問に対する答えとして(投稿した人々の助けを借りて)思いついたものです。

<?php 

$dir = "low res";
$returnstr = "";

// The first part puts all the images into an array, which I can then sort using natsort()
$images = array();

if ($handle = opendir($dir)) {
    while ( false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != ".."){
            $images[] = $entry;
        }
    }
    closedir($handle);
}

natsort($images);
print_r($images);

$newArray = array_values($images);

// This bit then outputs all the images in the folder along with it's own name

foreach ($newArray as $key => $value) {
    // echo "$key - <strong>$value</strong> <br />"; 

    $returnstr .= '<div class="imgWrapper">';
    $returnstr .= '<div class="imgFrame"><img src="'. $dir . '/' . $value . '"/></div>';
    $returnstr .= '<div class="imgName">' . $value . '</div>';
    $returnstr .= '</div>';


}

echo $returnstr;
?>
于 2012-09-03T16:11:15.580 に答える
0

PHP のソート関数の1 つを適用してみませんか?

$files = readdir( $theFoldersPath );
sort( $files  );
于 2012-09-01T23:07:14.517 に答える
0

readdirおそらくファイルシステムの順序を取るだけです。NTFS ではアルファベット順ですが、ほとんどの Unix ファイルシステムでは一見ランダムです。ドキュメンテーションには、「エントリは、ファイルシステムに保存された順序で返されます。」とさえ書かれています。

そのため、リストを配列に保存し、並べ替え方法に基づいて並べ替える必要があります。

于 2012-09-01T23:03:26.327 に答える
0

PHPマニュアルには次のように書かれています。

string readdir ([ resource $dir_handle ] )
Returns the name of the next entry in the directory. The entries are returned in the order in which they are stored by the filesystem.

つまり、同じように表示される必要があります。

詳細については、マニュアルを参照してください。

于 2012-09-01T23:03:34.607 に答える