按修改日期订购此数组?

时间:2011-10-30 22:19:26

标签: php usort filemtime

我有一个php文件,它在我的users目录中创建了一系列数组,然后将该数组发送回iPhone。

我的php正在创建的数组按字母顺序排序,我希望它按文件创建日期排序..

这是我的php文件的样子

<?php
$username = $_GET['username'];
$path = "$username/default/";


$files = glob("{$path}/{*.jpg,*.jpeg,*.png}", GLOB_BRACE);

// output to json
echo json_encode($files);

?>

我该怎么做?

谢谢:)

2 个答案:

答案 0 :(得分:5)

usort()与回调调用filemtime() ...

一起使用

这是未经测试的,但我相信它会让你走上正确的道路......

// First define a comparison function to be used as a callback
function filetime_callback($a, $b)
{
  if (filemtime($a) === filemtime($b)) return 0;
  return filemtime($a) < filemtime($b) ? -1 : 1; 
}

// Then sort with usort()
usort($files, "filetime_callback");

这应该将它们排在最前面。如果您希望它们是最新的,请在回调<三元操作中将>更改为return

答案 1 :(得分:0)

正如Michael Berkowski所说,使用usort()是可行的方法,但如果这是一次性排序(即您只需要在代码中以这种方式对数组进行排序),则可以使用匿名函数:

usort($files, function ($a, $b){
    if (filemtime($a) === filemtime($b)) return 0;
    return filemtime($a) < filemtime($b) ? -1 : 1; 
});

虽然没有必要,但它确实保存了一个函数调用。

如果您需要多次以这种方式对文件进行排序,最好创建一个单独的命名函数。