我是PHP新手,我無法弄清楚這個基本問題。 PHP是否有某種設置或列表對象?像數組一樣,但能夠動態添加或從中刪除任意數量的對象。PHP是否有Set數據結構?
8
A
回答
7
是的,你可以使用array對象和array functions。
基本上,您可以使用array_push函數或$arrayName[] = ...
表示法(其中arrayName是數組的名稱)動態生長數組。
2
PHP的數組像一個由數字索引的有序數組mashup和一個哈希查找表。您可以通過字符串索引查找任何元素,但元素也具有定義的順序。
3
只需使用一個php數組,在PHP中不存在像「固定大小」數組這樣的事情,所以你應該對它們很好。
+0
是的,有一個固定大小的數組。它被稱爲'SplFixedArray'。請看看這裏:http://php.net/manual/en/splfixedarray.construct.php – Julian 2017-11-15 15:48:35
2
由於您在問題的標題中提到了「Set對象」(即如果您需要對象不在該集合內重複),請查看SplObjectStorage(php 5.3+)。
1
您可以使用Nspl的Set。它支持其採取其他組,數組和穿越的對象作爲參數基本設置操作:
$set = set(1, 2);
$set->add('hello');
$set[] = 'world';
$set->delete('hello');
$array = [1, 2, 3];
$intersection = $set->intersection($array);
$anotherSet = Set::fromArray([1, 2, 3]);
$difference = $set->difference($anotherSet);
$iterator = new \ArrayIterator([1, 2, 3]);
$union = $set->union($iterator);
$isSubset = $set->isSubset([1, 2, 'hello', 'world']);
$isSuperset = $set->isSuperset([1, 2]);
2
如果您正在尋找不重複的元素一個Set
數據結構,似乎是PHP 7的SPL增加了一個支持數據結構爲Set。
相關問題
- 1. '優先級隊列'數據結構是否符合SET理論?
- 2. java是否有「LinkedConcurrentHashMap」數據結構?
- 3. hashMap,List和Set的數據結構
- 4. 在PHP中是否有Java Set的Equivent?
- 5. 是否有像流這樣的數據結構,但是很弱?
- 6. 數據庫結構:此結構是否適用於m:m?
- 7. 是否有荷蘭代碼(RIASEC)數據的結構化來源?
- 8. 是否有一個鄰近映射算法或數據結構?
- 9. 是否有基於磁盤的最近鄰數據結構?
- 10. 是否有可排序和可搜索的Python數據結構?
- 11. 這是否類似隊列數據結構有名字嗎?
- 12. 是否有iPhone的隊列/ FIFO數據結構?
- 13. Java是否具有支持併發修改的數據結構?
- 14. 是否有爲C#實現的任何圖形數據結構?
- 15. 是否有C#數據結構將鍵映射到多個值?
- 16. 是否有雙向multimap持久數據結構?
- 17. 刪除和退格鍵是否與數據結構有關?
- 18. 是否可以「凍結」Set(或Map)?
- 19. 是否有類似「數據庫」對象的標準數據結構?
- 20. Ruby是否有數據庫或數據結構來實現關係矩陣?
- 21. 是否有一個數據結構可以保存.NET中的數據集?
- 22. SQLite結果集是否在內存中的數據結構?
- 23. 是否有這樣一個結合隊列和散列表的數據結構?
- 24. 數據結構時,數據是客戶
- 25. STL中的Union-Find(或Disjoint Set)數據結構?
- 26. 驗證JSON是否在PHP上有確定的結構
- 27. Wolfram Mathematica中是否有HashTable結構?
- 28. YAML :: Node是否有Mark結構?
- 29. json-array結構是否有效
- 30. 我們是否將Rails ActiveRecord用作混合結構,即數據結構+對象?
一個PHP數組提供'List'和'HashMap',但不是'Set'。你可以通過''HashMap'接口模擬'Set',把你的元素設置爲數組鍵。 – dtech 2014-06-27 11:47:29
但是你可以只設置標量類型。如果我是對的,這是一個糟糕的解決方案。 – ribamar 2016-08-19 13:27:47