Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php读取目录排序_Php_Readdir - Fatal编程技术网

php读取目录排序

php读取目录排序,php,readdir,Php,Readdir,我有一个小php脚本,它读取一个目录,然后将所有文件(在本例中为jpg)回送到一个jquery图像滑块中。它工作得很好,但我不知道如何按名称对图像进行排序。目前,这些图像是随机的 <?php $dir = 'images/demo/'; if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { echo '<img src="'.$dir.$file.'"/>'; }

我有一个小php脚本,它读取一个目录,然后将所有文件(在本例中为jpg)回送到一个jquery图像滑块中。它工作得很好,但我不知道如何按名称对图像进行排序。目前,这些图像是随机的

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

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

closedir($handle);
}
?>

这方面的任何帮助都会很好


还有一件事我不明白。脚本在该文件夹中创建了2个不存在的无名非jpg文件???但我还没有真正检查过这一点

尝试将每个项目放入一个数组中,然后对其进行排序:

$images = array();

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

natcasesort($images);

foreach ($images as $file) {
    echo '<img src="'.$dir.$file.'"/>';
}
$images=array();
while(false!=($file=readdir($handle))){
$images[]=$file;
}
natcasesort($图像);
foreach($图像作为$文件){
回声';
}
试试这个:

$dir = 'images/demo/';
$files = scandir($dir);
rsort($files);
foreach ($files as $file) {
    if ($file != '.' && $file != '..') {
        echo '<img src="' . $dir . $file . '"/>';
    }
}
$dir='images/demo/';
$files=scandir($dir);
rsort(文件);
foreach($files作为$file){
如果($file!='.&&$file!='..')){
回声';
}
}
编辑: 使用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 />'; 
}
?>

这个
应该是一个
谢谢,这很好用。我相信其他的建议也会奏效。这个看起来最简单。只有一个问题。我不懂分拣部分。目前,它对图像进行排序,我如何对它们进行排序,使其处于下降状态?我需要最高值10.jpg为第一个,1.jpg为最后一个。默认情况下,它是升序的。您可以使用
rsort
进行降序,然后回答updated@ManojYadav干得好,Manoj!Cheers@PietBezManoj做得很好,但我必须指出,确保您的文件夹中只有
.jpg
文件。如果您有一个“索引”文件或任何其他非图像文件,将显示为一个损坏的图像。我只是觉得你应该意识到这一点。干杯(附言:我没有从Manoj的答案中拿走,这是一个很好的答案):(和平)“然后回显所有文件(本例中为jpg)”,因为
$dir='images/demo/
假设您只有
.jpg
文件。如果没有,它将显示其中的每个文件。您可以使用
foreach(glob(“folder/*.jpg”)作为$dir{
。@OP(Piet Bez)如果您觉得有人已经回答了您的问题,并且问题已经解决,您可以接受一个,这样它将被标记为已解决。否则,它将保持“未回答”。干杯(Peace)太好了,这是实现排序的最微创的更改。
<?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 />'; 

    }
}
?>