Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 glob()—;按名称排序_Php_Sorting_Foreach_Reverse_Glob - Fatal编程技术网

Php glob()—;按名称排序

Php glob()—;按名称排序,php,sorting,foreach,reverse,glob,Php,Sorting,Foreach,Reverse,Glob,如何按文件名反转排序?目前,它以字母/数字顺序显示所有文本文件,但我尝试以降序显示。现在,我有 <?php foreach (glob("*.txt") as $filename) { include($filename); } ?> 我对PHP非常陌生,但我尝试了usort并添加了数组,但这只会导致它只显示1个文本文件,因此要么不起作用,要么我只是编码错误。您可以使用array\u reverse: foreach(array_reverse(glob("*.txt

如何按文件名反转排序?目前,它以字母/数字顺序显示所有文本文件,但我尝试以降序显示。现在,我有

<?php  
foreach (glob("*.txt") as $filename) {
   include($filename);
}
?>


我对PHP非常陌生,但我尝试了usort并添加了数组,但这只会导致它只显示1个文本文件,因此要么不起作用,要么我只是编码错误。

您可以使用
array\u reverse

foreach(array_reverse(glob("*.txt")) as $filename) { ...

使用
usort()
的方法是

usort($files, function($a, $b) {
    return strcmp($b, $a);
});

<?php
for($result = glob("*.txt"), $i = count($result); $i > 0; --$i) {
    include($result[$i-1]);
}
?>

只是@Foo-Bah答案的补充: 在处理目录中的文件名时,我通常添加
natsort
,以防止出现典型的排序情况:

  • “image1.png”
  • 'image10.png'
  • “image2.png”
是一种更加用户友好的排序算法,将保留自然编号:

  • “image1.png”
  • “image2.png”
  • 'image10.png'
因此,福巴的答案是:

$list = glob("*.jpg");
natsort($list);
foreach(array_reverse($list) as $filename) { ...

请注意,
natsort
正在修改传入参数的数组,并且只返回布尔值。

反向排序函数将是
rsort()
但必须是一个带有临时数组变量的独立语句。我遇到了一些字母排序问题,但根本问题是小写字母的ascii值高于大写字母。像myphoto1.jpg这样的文件名在myPhoto2.jpg之后返回,因为大写字母P。