2010-09-21 15 views

Odpowiedz

7

Tak, można użyć obiektu array i array functions.

Zasadniczo można dynamicznie wyhodować tablicę przy użyciu funkcji array_push lub notacji $arrayName[] = ... (gdzie nazwa_tablicy jest nazwą macierzy).

+2

Tablica PHP zawiera zarówno "List", jak i "HashMap", ale nie "Set". Możesz emulować interfejs 'Set' przez interfejs' HashMap', ustawiając twoje elementy jako klucz tablicy. – dtech

+0

Ale wtedy możesz mieć zestawy tylko typów skalarnych. Jeśli mam rację, jest to złe rozwiązanie. – ribamar

2

Macierze PHP, takie jak zestaw uporządkowanych tablic indeksowanych przez liczbę i tablica skrótów. Możesz wyszukać dowolny element za pomocą indeksu łańcuchowego, ale elementy mają także zdefiniowaną kolejność.

3

Po prostu użyj tablicy php, w PHP nie ma czegoś takiego jak tablica o stałym rozmiarze, więc powinieneś być z nimi w porządku.

+0

Tak, istnieje macierz o ustalonej wielkości. Nazywa się "SplFixedArray". Zajrzyj tutaj: http://php.net/manual/en/splfixedarray.construct.php – Julian

2

Od kiedy wspomniano o obiekcie "Set" w tytule pytania (np. Jeśli nie ma potrzeby powtarzania obiektów w zbiorze), należy zapoznać się z SplObjectStorage (php 5.3+).

1

Można użyć Set z Nspl. Obsługuje podstawowe operacje określić, które podejmuje inne zestawy, tablic i przesuwny obiekty jako argumenty:

$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

Jeśli szukasz struktury Set danych bez powtarzających się elementów, wydaje się, że w PHP 7 SPL dodaje wsparcie dla Set struktura danych.

Powiązane problemy