php
  • opendir
  • 2014-09-12 47 views 1 likes 
    1
    <?php 
           if ($handle = opendir('img/albums/1/')) { 
            while (false !== ($file = readdir($handle))) { 
             if ($file != "." && $file != "..") { 
    
              echo "<li><div class='lay-outer pr db oh img_'><img src='img/albums/1/$file' class='open-img-sidebar-spec_' /></div></li>"; 
    
             } 
            } 
            closedir($handle); 
           } 
          ?> 
    

    我有以下代码。所以,我正在从一定的胜利中获得照片。所有在胜利中的图片都是从1到N列出的(例如1.jpg,2.jpg等)。php opendir文件按编号列出

    我需要按顺序列出它们,例如从1到90等等。现在,他们随机上市,我真的想解决它;

    请帮帮忙,谢谢:)

    +1

    据我所知opendir会给你的文件与ls -l相同的顺序,所以你可以收集的文件,然后排序在PHP像[这里](http://stackoverflow.com/questions/884974/sort-和显示目录一览按字母顺序使用-执行opendir功能于PHP) – 2014-09-12 14:02:54

    回答

    3

    考虑到他们是编号的文件名,你需要一个数值自然排序字母。所以即使像glob()这样的另一个函数也无济于事。

    天真的解决办法是:

    • 循环遍历目录
    • 存储其中的文件在一个数组
    • 使用中的一个数组排序:sort($arr, SORT_NUMERIC)natsort()
    • 循环阵列并按顺序输出文件
    0

    您可能想要使用

    scandir() 
    

    PHP称它命令文件alphabeticaly看看:link

    默认情况下,排序顺序是按升序排列字母。如果可选sorting_order设置为SCANDIR_SORT_DESCENDING,那么排序顺序按字母顺序降序排列。如果它设置为SCANDIR_SORT_NONE,那么结果是未排序的。

    相关问题