2011-08-19 21 views
11

nasıl yeniden düzenleyebilirsiniz böyle nesnelerin dizisi: date anahtar ilediziyi sıralar

[495] => stdClass Object 
     (
     [date] => 2009-10-31 18:24:09 
     ... 
     ) 
[582] => stdClass Object 
     (
     [date] => 2010-2-11 12:01:42 
     ... 
     ) 
... 

, eskiden yeniye?

cevap

24
usort($array, function($a, $b) { 
    return strtotime($a['date']) - strtotime($b['date']); 
}); 

Yoksa PHP 5.3 yoksa:

function cb($a, $b) { 
    return strtotime($a['date']) - strtotime($b['date']); 
} 
usort($array, 'cb'); 
+3

iyi görünüyor ve ben veritabanında sıralama tarih/saat yapmak OP tavsiye ve/veya strtotime olarak, biçimlendirilmiş değeri ile birlikte düz bir unix zaman damgası döneceğini() sahiptir DİKKAT EDİLECEK HUSUSLAR VE ÇOK SAYISI ÇIKAR xpensive. –

+0

hmm .. ama eski sayısal tuşlarını tutmaz .. – Nadine

+2

'usort' tarafından' usort' yerine ' – arnaud576875

2

Ben arnaud576875 'ın cevabı genişletmek istedik. Aynı sorunu aştım ama DateTime nesnelerini kullanarak. Ben de aynı şeyi başardım.

usort($array, function($a, $b) { 
    return $a['date']->format('U') - $b['date']->format('U'); 
}); 
11

orijinal soru stdClass dizileri() nesneleri sıralama hakkında olduğundan, burada $ a ve $ b nesnelerdir eğer çalışacak kod:

usort($array, function($a, $b) { 
    return strtotime($a->date) - strtotime($b->date); 
}); 

Yoksa yoksa PHP 5.3:

function cb($a, $b) { 
    return strtotime($a->date) - strtotime($b->date); 
} 
usort($array, 'cb'); 
+2

Bu doğru cevap olmalıdır. – devXen