2011-10-30 72 views
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); 

?> 

如何我会这样做吗?

谢谢:)

回答

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三元操作中将<更改为>

+0

完美的作品,谢谢! – Jacob

+0

我需要添加$ dirPath:global $ dirPath; if(filemtime($ dirPath。$ a)== filemtime($ dirPath。$ b))。 。 。 – Atara

0

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

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

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

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