0

我以前运行过这个类似的功能,但在我的新服务器(PHP 5)filemtime上似乎不起作用。

我试过这个小脚本,页面返回空白。什么都没有出现,甚至连回显的文本也没有。它必须是 PHP 中的某些东西,但似乎无法确定它。任何帮助表示赞赏。

ini_set('display_errors',1); 
error_reporting(E_ALL);

$images = glob("source_images/*.jpg");

usort($images, function($a, $b) {
     return filemtime($a) < filemtime($b);
});

echo "worked";

上面只是代码的一部分,但我相信失败是filemtime因为在上面,我没有得到echo worked显示。

4

3 回答 3

1

嗯,这是因为你没有输出任何东西。usort()$images根据文件修改日期对数组进行排序,但要显示结果,您必须使用循环:

foreach ($images as $image) {
    echo $image.PHP_EOL;
}

更新:

目前尚不清楚您使用的是什么版本的 PHP,但我认为这可能是因为您的服务器不支持匿名函数。匿名函数仅在 PHP 5.4 之后可用。因此,如果您尝试在以前的 PHP 版本上使用,它将无法正常工作。

要么升级到支持匿名函数的 PHP 版本,要么单独编写函数如下:

function timesort($a, $b) {
     return filemtime($a) < filemtime($b);
}
usort($images, 'timesort');
于 2013-10-29T16:29:07.177 回答
0

问题在于使用 PHP 5.1 中没有的 lambda 函数

于 2013-10-29T16:42:30.497 回答
0

奇怪......应该打印回声“工作”。当它不被打印时,通常是因为某处有致命的地方。Prolly 在 glob 或 filemmtime 上。无论如何,我总是使用 ini_set('display_errors', '1'); '1' 不是 1。

于 2013-10-29T16:49:49.133 回答