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

?> 

どのように見えるものです私はこれをするだろうか?

感謝:) filemtime()を呼び出し、コールバックとusort()を使用して

答えて

5

...

これはテストされていないですが、私はそれが正しい道にあなたを設定すると考えている...

// 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

usort()を使用してMichael Berkowskiが言いましたが、これは一度だけの並べ替え(つまり、コード内でこのように配列を並べ替えるだけでよい)の場合は、無名関数を使用できます。

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

必須ではありませんが、関数呼び出しを保存しません。

このようにファイルを複数回ソートする必要がある場合は、別の名前付き関数を作成することをお勧めします。

関連する問題