【问题标题】:Displaying opendir results in a select list alphabetically按字母顺序在选择列表中显示 opendir 结果
【发布时间】:2013-06-04 14:11:36
【问题描述】:

我正在使用以下内容填充选择元素:

<?php
      $files2 = opendir(WAVEFORM_RELATIVE_PATH);
      while (false!==($READ=readdir($files2))) {
        if (in_array(substr(strtolower($READ),-4),array('.png'))) {
            echo '<option'.($TRACKS->waveform==$READ ? ' selected="selected"' : '').'>'.$READ.'</option>'."\n";
        }
      }
      closedir($files2);
      ?>

目前它以完全随机的顺序返回结果。如何让列表按字母顺序显示?

【问题讨论】:

    标签: php alphabetical opendir


    【解决方案1】:

    也许您可以将文件名存储在数组中,对数组进行排序,然后在选择选项中使用它们

    【讨论】:

      【解决方案2】:

      一个简单的方法是使用scandir。您可以使用SCANDIR_SORT_ASCENDING (0) 或SCANDIR_SORT_DESCENDING (1) 指定排序顺序:

      $files2 = scandir(WAVEFORM_RELATIVE_PATH, SCANDIR_SORT_ASCENDING);
      foreach($files2 as $file) {
          if (in_array(substr(strtolower($file), -4), array('.png'))) {
              echo '<option'.($TRACKS->waveform==$file? ' selected="selected"' : '').'>'.$file.'</option>'."\n";
          }
      }
      

      【讨论】:

      • 感谢您的建议,但这不会在我的下拉列表中返回任何结果。空目录?可能是因为原始例程正在读取先前已选择并存储的选项,而这看起来不像?还是我错了?
      • 这只是一个展示scandir如何工作的例子。我不知道您的代码的用途或它应该如何工作。也许尝试在循环中回显$file,以确保目录中的文件实际上被读入$file2
      • 太棒了,完成了这项工作。非常感谢;)
      【解决方案3】:

      简单,使用glob

      $files = glob(WAVEFORM_RELATIVE_PATH.'/*.png');
      sort($files);
      foreach($files as $file)
          echo '<option....>'.$file.'</option>';
      

      【讨论】:

        猜你喜欢
        • 2010-10-27
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多