2011-10-30 163 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; 
}); 

雖然沒有必要,但它確實保存了函數調用。

如果您需要多次對文件進行排序,則最好創建一個單獨的命名函數。