2

我有一个 php 文件,它在我的用户目录中创建一个包含所有内容的数组,然后将该数组发送回 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);

?>

我该怎么做?

谢谢 :)

4

2 回答 2

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三元操作。

于 2011-10-30T22:22:44.613 回答
0

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

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

虽然不是必需的,但它确实保存了一个函数调用。

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

于 2017-05-19T15:28:49.513 回答