Ich bin relativ neu zu PHP und habe eine harte Zeit herauszufinden, die richtige Datenstruktur zu verwenden. Nehmen wir an, ich habe eine Klasse FooBar mit equals()
und hashCode()
ordnungsgemäß implementiert. Welche Art von Sammlung in PHP (wenn es überhaupt welche gibt), die dem Java-HashSet am ähnlichsten ist? Ich brauche eine Sammlung von Objekten ohne Duplikate. Jemand hat vorgeschlagen, Array und die Funktion array_key_exists
zu verwenden, aber ich habe mich nur gefragt, ob es eine andere Möglichkeit gibt, dies zu tun?Java HashSet entspricht in PHP
Antwort
von Ab Release 5.2 Php SplObjectStorage bietet, dass Funktionalitäten von Java Set bietet:
- kümmert sich um Einzigartigkeit (gleiche Objekt kann nicht zweimal hinzugefügt werden)
- Einfach durch die Sammlung iterieren
- leicht zu überprüfen Existenz eines Objekts in der Sammlung
prüfen http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage zum Beispiel Nutzungs
In der PHP-Programmiersprache der Standard-PHP-Bibliothek (SPL) sind nur wenige Datenstrukturen verfügbar. Obwohl sie im Vergleich zu den Java Collections Framework-Implementierungen nichts sind, können sie manchmal sehr nützlich sein, indem sie eine erweiterte Funktionalität als die der Arrays bereitstellen. Sie finden die Dokumentation der verfügbaren Datenstrukturen here. Die meisten HashSet-ähnlichen Datenstrukturen in PHP wären SplObjectStorage.
Aus der Dokumentation:
Die SplObjectStorage-Klasse stellt eine Karte von Objekten auf Daten oder durch Daten, einen Objektsatz zu ignorieren. Dieser doppelte Zweck kann in vielen Fällen nützlich sein, wenn Objekte eindeutig identifiziert werden müssen.
Objekte in PHP implementieren die Methoden equals()
und hashCode()
nicht. Die Eindeutigkeit von Objekten wird durch den Wert bestimmt, der von der -Funktion zurückgegeben wird. Derselbe Wert wird von der Klasse SplObjectStorage
verwendet, um die darin enthaltenen Objekte eindeutig zu identifizieren. Die SplObjectStorage::getHash($object)
Methode kann verwendet werden, um die Kennung eines Objekts in der SplObjectStorage
Sammlung abzurufen.
- 1. Hashset entspricht in SQL Server
- 2. HashSet Kollisionen in Java
- 3. java entspricht PHP HMAC-SHA1
- 4. Java HashSet equiv in C++
- 5. Java HashSet Leistung
- 6. HashSet in Java - Vergleich und Hashtasten
- 7. Entspricht C# in Java?
- 8. Entspricht #define in Java?
- 9. HashSet C# -Element in HashSet modifizieren
- 10. Entspricht der Crypt-Funktion von PHP in Java
- 11. C# String.Format() Entspricht in PHP?
- 12. Entspricht PHP simplexml_load_string in Node.js
- 13. Java HashSet mit einem benutzerdefinierten Gleichheits-Kriterium?
- 14. Java - HashSet zum Filtern von Duplikaten (XSSFCell)
- 15. Java - Wissen, was eliminiert wurde HashSet?
- 16. C# DateTime.Ticks entspricht in Java
- 17. Java TreeSet entspricht in Python?
- 18. Java TreeMap entspricht in C#?
- 19. Java Stream entspricht in Ruby?
- 20. Python "Event" entspricht in Java?
- 21. Java Map entspricht in C#
- 22. Java SocketChannel entspricht in Erlang
- 23. Java-System.currentTimeMillis() entspricht in C#
- 24. Java HashSet und Datentyp Kurz, Inkompatibilität?
- 25. PHP entspricht Python's enumerate()?
- 26. cURL zu PHP entspricht
- 27. Autotest entspricht für PHP?
- 28. Javascript Entspricht PHP Explode()
- 29. PHP: Entspricht umfassen eval
- 30. java entspricht printf ("% *. * F")
Arrays wären der richtige Weg. Sie können die array_unique-Funktion von PHP verwenden, um ein Array ohne Duplikate zu extrahieren oder array_key_exists vor dem Einfügen zu verwenden. –