7

ディレクトリを読み取り、すべてのファイル (この場合は jpg) を jquery イメージ スライダーにエコーする小さな php スクリプトがあります。それは完全に機能しますが、名前の降順で画像を並べ替える方法がわかりません。現時点では、画像はランダムです。

<?php
$dir = 'images/demo/';
if ($handle = opendir($dir)) {

while (false !== ($file = readdir($handle))) {
    echo '<img src="'.$dir.$file.'"/>';
}

closedir($handle);
}
?>

これに関するヘルプは素晴らしいでしょう。

もう1つ、私は理解していません。スクリプトは、そのフォルダーに存在しない2つの名前のない非jpgファイルを取得しますか??? しかし、私はまだそれを実際にチェックしていません

4

3 に答える 3

13

これを試して:

$dir = 'images/demo/';
$files = scandir($dir);
rsort($files);
foreach ($files as $file) {
    if ($file != '.' && $file != '..') {
        echo '<img src="' . $dir . $file . '"/>';
    }
}
于 2013-08-07T18:24:35.063 に答える
5

各項目を配列に入れて並べ替えてみてください。

$images = array();

while (false !== ($file = readdir($handle))) {
    $images[] = $file;
}

natcasesort($images);

foreach ($images as $file) {
    echo '<img src="'.$dir.$file.'"/>';
}
于 2013-08-07T18:21:29.820 に答える
1

編集:

asort() 関数を使用してバージョンを並べ替えます。

asort()昇順 -arsort()逆順

<?php

// You can use the desired folder to check and comment the others.
// foreach (glob("../downloads/*") as $path) { // lists all files in sub-folder called "downloads"
foreach (glob("images/*.jpg") as $path) { // lists all files in folder called "test"

    $docs[$path] = filectime($path);
} arsort($docs); // sort by value, preserving keys

foreach ($docs as $path => $timestamp) {

// additional options
//    print date("d M. Y: ", $timestamp);
//    print '<a href="'. $path .'">'. basename($path) .'</a>' . " Size: " . filesize($path) .'<br />';

echo '<img src="'.$path.$file.'"/><br />'; 
}
?>


前の回答

glob( ) 関数を使用します。

機能を利用してglob()、ファイルやフォルダを自分好みに設定できます。

PHP.netの glob( )関数の詳細

すべてのファイルを表示するには、次を使用します。(glob("folder/*.*")

<?php

foreach (glob("images/*.jpg") as $file) { //change "images" to your folder
    if ($file != '.' || $file != '..') {
    
// display images one beside each other.
// echo '<img src="'.$dir.$file.'"/>';

// display images one underneath each other.
    echo '<img src="'.$dir.$file.'"/><br />'; 

    }
}
?>
于 2013-08-07T18:37:15.130 に答える