2011-05-06 15 views
5

StackOverflow'ta her usort makalesini okuyabildiğimi düşünüyorum, ancak bunu yapamam. İhtiyacım olan araç usort değil midir? İşte (Ben $allPages atadığınız) Ben ile çalışıyorum dizinin biraz:Bu diziyi usort ile nasıl sıralamalıyım?

Array 
(
    [0] => Page Object 
     (
      [id] => 4 
      [slug] => articles 
      [created_on] => 2009-08-06 07:16:00 
     ) 

    [1] => Page Object 
     (
      [id] => 99 
      [slug] => a-brief-history 
      [created_on] => 2011-04-25 12:07:26 
     ) 

    [2] => Page Object 
     (
      [id] => 98 
      [slug] => we-arrive 
      [created_on] => 2011-04-24 13:52:35 
     ) 

    [3] => Page Object 
     (
      [id] => 83 
      [slug] => new-year 
      [created_on] => 2011-01-02 14:05:12 
     ) 
) 

Ben created_on değerine sıralamak için sonuçta çalışıyorum ama şu an için, ben olmaya razıyım bunlardan herhangi birini sıralamak mümkün! Normal cmp($a, $b) tip geri bildirimi usort ile denediğimde - örneğin this answer on a usort question - boş bırakıyorum. Örnek:

Ve print_r bana hiçbir şey vermez. Bu PHP 5.2.n, 5.3 btw ile değil.

Rehberlik, lütfen? Ve teşekkür ederim! Dizideki

+0

created_on değeri ile ne demek istiyorsun? – SIFE

cevap

4

Kişisel ürün nesneler, değil ilişkisel diziler, bu yüzden bu gibi onlara başvurmak gerekir: dizinin

function cmp($a, $b) { 
    return strcmp($a->slug, $b->slug); 
} 
usort($allPages, 'cmp') 
+0

PHP, dönemleri değil okları kullanır. Ama fikir aynı. – Tesserex

+0

Haha, üzgünüm, her gün PHP ve Ruby ile çalışıyorum ve bazen çok hızlı geçtiğimde onları karıştırıyorum. Sabit. – Kelly

+0

bunu kırdı! "Doh!" benim için an. Çok teşekkürler! –

3

Kişisel dökümü öğeler Sayfa Nesneler değil diziler söylüyor. Şans eseri $a['created_on'] yerine $a->created_on demeniz gerekiyor mu? Dizi gösterimi yerine nesne notasyonu kullanma. @Tesserex anlaşılacağı gibi

Sadece tahmin

...

+0

Evet, ve Kelly'nin kodunu dürtmek için teşekkürler. Buna geri dönebildiğim zaman düzeltildi. :) –

1

, nesne gösterimi yerine dizi gösterimini kullanmak gerekir.

Açık bildirimler açıksa, bir nesneye bir dizi olarak erişme konusunda hata iletileri alırsınız.

Dikkate alınması gereken diğer bir konu, Sayfalarınızın hepsinin bir 'created_on' özelliğine sahip olmaması, bazılarının 'broadcast_on' özelliğine sahip olmasıdır. Sıralama yapmak istediğiniz anahtarın kullanılabilir olduğundan emin olmak için usort yönteminizin içinde bazı hata denetimi/mantığı yapmanız gerekir.

+0

Hata mesajlarını takip ettiğiniz için teşekkürler. Bu kodun oluştuğu ortamda, hata raporlamasını açmak bir acıdır, ama belaya bulaşmış olmalıyım. Ve farklı tarih özniteliklerini yakalamışlar: aslında hepsinin ikisi de var. Bu, burada sunulması için nesneleri kırpmaktaki hatamdı. –

+0

'error_reporting (E_ALL);' ve 'ini_set ('display_errors', 'on');' çoğu durumda çalışmalıdır. gerçekten iyi bilinen yöntemler \: –

İlgili konular