php对文件排序,php – 使用filemtime()和usort()对文件进行排序会产生随机结果

我正在使用usort()和filemtime()按修改日期对文件进行排序,但它会以错误的顺序随机返回文件.我想我错过了一些非常简单但我无法弄明白的东西.

usort($user_files, function($a, $b) {

return filemtime($a) > filemtime($b);

});

foreach ($user_files as $f) {

echo $f . "
";

}

上传文件1.txt … 10.txt以测试显示的结果是:

6.txt

5.txt

4.txt

3.txt

2.txt

1.txt

7.txt Uploaded!

正如所料.然后,当我达到8.txt时:

6.txt

7.txt

5.txt

4.txt

2.txt

3.txt

1.txt

8.txt Uploaded!

另一次,直到我达到10.txt是好的:

7.txt

8.txt

9.txt

6.txt

5.txt

2.txt

3.txt

4.txt

1.txt

10.txt Uploaded!

当ls -t返回时:

10.txt 9.txt 8.txt 7.txt 6.txt 5.txt 4.txt 3.txt 2.txt 1.txt

那么……那里发生了什么?

Debian Wheezy 7.4, up-to-date.

PHP Version 5.4.4-14 deb7u8

Linux pc 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64

FPM/FastCGI

nginx/1.2.1

解决方法:

value_compare_func

The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

但提供的回调只有“>”操作符:

{

return filemtime($a) > filemtime($b);

}

$a > $b Greater than TRUE if $a is strictly greater than $b.

您对在两个文件时间之间使用“减法”“ – ”运算符的看法,因为Man再次说filemtime是整数(http://www.php.net/manual/en/function.filemtime.php).

if (filemtime($a) === filemtime($b)) return 0;

return filemtime($a) < filemtime($b) ? -1 : 1;

来源:https://www.icode9.com/content-1-278951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值