PHP tarihe göre dizideki öğeleri saklanması

4 Cevap php

Ben bir dizide birçok "olay" nesneleri depolamak için gereken bir php programı üzerinde çalışıyorum. Her olay bir "nedeniyle" tarihi vardır ve kolayca o gün bu olayları almak gerekiyor. Herhangi bir günde birden fazla bir olay olabilir.

Ben $ dizi ["yıl-ay-gün"] gibi, anahtar olarak bir MySQL tarzı tarihini kullanarak düşündüm, ama dağınık. Ben de $ dizi [yıl] [ay] [gün] çalıştı, ama sonra ben de bana dağınık görünüyor bir 4d dizi olsun.

Benim soru şudur: herkes bu gibi zamana nesneleri saklamak iyi bir yolunu buldu Has, ve eğer öyleyse, bunu nasıl yaptın?

4 Cevap

Ne $array['2009-08-20'][0], $array['2009-08-20'][1], ve saire ile yanlış? Bu veri yapısı verilen temsil umuyoruz "dağınık" hiç görünmüyor.

Ayrıca yıl ve aya göre olayları erişmek istiyorsa, tarif 4D yapısı daha mantıklı (ya da tamamen farklı bir yapıya) yapmak olabilir, ama "bir gün" senin ilke organizasyon olduğunda, basit (ve okunabilir) ile gitmek Senin gibi tarihleri ​​tasviri dizi indeksi için tarif.

Yerine yıl bir gün olarak kodlamak? (İsterseniz, yani 1-365 veya 0-364)

Eğer (strtotime () veya ne olursa olsun) bir zaman değeri varsa, kolayca gün-of-yıl (bir sıçrama gün için 365) 0-365 bir değer döndürür date('z', $time) hangi kullanarak alabilirsiniz.

Daha sonra $ olayları gibi bir şey [yıl] [gün] biri düzeyine göre sıralanmasına azaltır [index] kullanabilirsiniz - dürüst, yuvalama sürece çok ileri gitmez gibi "şeytan" ya da bir şey değildir.

Bir timestamp kullanabilirsiniz. App year 2038 problem yaşayacaktır, altta yatan damgası türü olarak imzalı 32-bit tamsayı kullanarak herhangi bir sistem üzerinde unutmayın.

O gün 12:00:00 Unix zaman anahtarlı bir dizi saklayın. Bu dizi o gün için tüm olayları içerir.

Bu PHP'nin strtotime (), time () ve date () işlevleri kullanılarak Unix zaman ve insan-okunabilir tarihleri ​​arasında dönüştürmek kolaydır.