Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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_Function - Fatal编程技术网

以数字顺序列出文件的php目录

以数字顺序列出文件的php目录,php,function,Php,Function,如何更改此函数,使其按当前随机排序的顺序列出文件。我已经更改了它,因此它排除了Index.php文件。任何帮助都将不胜感激 function DirDisply() { $TrackDir=opendir("."); while ($file = readdir($TrackDir)) { $info = pathinfo($file); $file_name = basename($file,'.'.$info['extension']); if ($file == "." || $fil

如何更改此函数,使其按当前随机排序的顺序列出文件。我已经更改了它,因此它排除了Index.php文件。任何帮助都将不胜感激

function DirDisply() {
$TrackDir=opendir(".");

while ($file = readdir($TrackDir)) {
$info = pathinfo($file);
$file_name =  basename($file,'.'.$info['extension']);
if ($file == "." || $file == ".." || $file == "index.php"){ }
else {
print "<p><a class=btn href=$file target=content>Item Number $file_name</a></p>";

}
}
closedir($TrackDir);
return;
}
函数dirdispy(){
$TrackDir=opendir(“.”);
而($file=readdir($TrackDir)){
$info=pathinfo($file);
$file_name=basename($file'..$info['extension']);
如果($file==“| |$file==”。“| |$file==”index.php“{}
否则{
打印“

”; } } closedir($TrackDir); 返回; }
考虑使用glob()并按您想要的方式对数组进行排序。

如果您想继续使用
readdir()
您必须在while循环中设置一个新数组,然后按您想要的顺序对数组进行排序

就我个人而言,我会切换到
scandir()
,因为它内置了一个排序选项,并且已经按字母升序排序到一个数组中(代码更少,更容易维护等):

无论采用哪种方法,都必须在数组上使用foreach,因此
scandir()
是更好的方法,因为它也意味着没有while循环

scandir()
返回一个数组,该数组(可以说)比使用
readdir()循环遍历文件夹更容易管理,因为您可以一次性检查最终结果。IE检查数组是一个数组,包含键、值、循环、循环中的每个元素等

然后使用
scandir()
foreach
返回的数组,而不是像当前那样使用
while

示例(尽管它只是来自php.net,但它是一个很好的基本示例):

$files2
中的1将颠倒顺序。默认排序顺序为升序(0,但无需指定此顺序),1表示降序。
当然,您可以使用您的代码循环数组(
$files1
):
打印“


其中,循环数组的值将是文件名

无论何时使用这些函数,您都应该在php网络上读取它们。如果您在php.net上查找原始函数
readdir()
,那么(几乎)总会有指向类似函数的链接,您会发现
scandir()
;)

旁注:
也。你检查某物是否=某物,如果为真,则什么也不做,否则就做些什么。对于这种情况,这不是正确的方法。
如果它=某事,你应该做某事,例如:

if ($file != "." || $file != ".." 
    || $file != "index.php")
  { 
    print "<p><a class=btn 
           href=$file target=content>Item Number $file_name</a></p>";
  }
if($file!=“| |$file!=”)
||$file!=“index.php”)
{ 
打印“

”; }

您甚至可以让其他人报告错误或“无文件”之类的内容

如果您想要一些自然的排序,您可以将scandir和natsort结合起来

    $images = array_diff(scandir($the_path), array('..', '.'));
    natsort($images);
    foreach ($images as $img) {
        // TODO
    }
natsortnatural订购地点:

此函数实现一种排序算法,该算法按照人类的方式对字母数字字符串进行排序

它是按字母顺序排列的,但会考虑类似文件名中的索引号:

file-2.jpg
file-1.jpg
file-10.jpg 
将被订购

file-1.jpg
file-2.jpg
file-10.jpg 
另一方面,scandir只按字母顺序排列,如:

file-1.jpg
file-10.jpg
file-2.jpg

我不知道这个函数存在!那很酷。供参考:谢谢你,我会对你的旁注进行修改。你能为scandir()做个例子吗?因为我对PHP非常陌生。谢谢,完成了。希望有帮助:)
file-1.jpg
file-10.jpg
file-2.jpg