2012-05-16 7 views
5

'daki HashSet eşdeğeri PHP'nin nispeten yeni olduğunu ve kullanmak için doğru veri yapısını belirleyerek zor bir zaman geçiriyorum. Diyelim ki equals() ve hashCode() ile düzgün bir şekilde uygulanan bir sınıf FooBar'ım var. Java'nın hashSet'ine benzeyen php'deki (eğer varsa) ne tür bir koleksiyon? Yinelenen nesnelerden oluşan bir koleksiyona ihtiyacım var. Birisi dizi ve array_key_exists işlevini kullanarak önerdi, ama sadece bunu yapmak için başka bir yolu olup olmadığını merak ediyordum? açıklamasında Php SplObjectStorage sunmaktadır 5,2 başlayarakPHP'nin

+0

Diziler gitmenin yolu olacaktı. Duplicate olmadan bir dizi ayıklamak için PHP'nin array_unique işlevini kullanabilir veya eklemeden önce array_key_exists'i kullanabilirsiniz. –

cevap

2

Standart PHP Kitaplığı (SPL) tarafından sağlanan PHP programlama dilinde az sayıda Veri yapısı vardır. Java Koleksiyonlar Çerçevesi uygulamalarıyla karşılaştırıldığında hiçbir şey olmamasına rağmen, bazen dizilerinkinden daha gelişmiş bir işlev sunarak çok kullanışlı olabilirler. Mevcut Veri yapılarının here belgelerini bulabilirsiniz.

PHP'deki en HashSet benzeri Veri yapısı SplObjectStorage olacaktır. belgelerine

:

SplObjectStorage sınıf veri, bir nesne seti gözardı ederek, veri nesneleri bir haritasını sağlar ya da. Bu ikili amaç, nesneleri benzersiz bir şekilde tanımlama ihtiyacını içeren birçok durumda yararlı olabilir. PHP'de

Nesneler equals() ve hashCode() yöntemlerini uygulamak gerekmez. Nesnelerin benzersizliği, spl_object_hash() işlevinden döndürülen değere göre belirlenir. Aynı değer, içerdiği nesneleri benzersiz şekilde tanımlamak için SplObjectStorage sınıfı tarafından kullanılır. yöntemi, SplObjectStorage koleksiyonunda bulunan bir nesnenin tanımlayıcısını almak için kullanılabilir.