2010-09-21 14 views

Respuesta

7

Sí, podría usar el objeto array y el array functions.

Básicamente, puede hacer crecer dinámicamente una matriz utilizando la función array_push, o la notación $arrayName[] = ... (donde arrayName es el nombre de su matriz).

+2

Una matriz de PHP proporciona una 'Lista' y' HashMap', pero no un 'Conjunto'. Puede emular un 'Set' a través de la interfaz' HashMap' configurando sus elementos como una clave de matriz. – dtech

+0

Pero luego puede tener conjuntos solo de tipos escalares. Si estoy en lo correcto, esta es una solución pobre. – ribamar

2

Las matrices de PHP son como una mezcla de matrices ordenadas indexadas por un número y una tabla de búsqueda hash. Puede buscar cualquier elemento mediante un índice de cadena, pero los elementos también tienen un orden definido.

3

Simplemente use una matriz de php, no existe una matriz de 'tamaño fijo' en PHP, por lo que debería estar bien con ellas.

+0

Sí, hay una matriz de tamaño fijo. Se llama 'SplFixedArray'. Por favor, eche un vistazo aquí: http://php.net/manual/en/splfixedarray.construct.php – Julian

2

Como mencionó un "objeto Set" en el título de la pregunta (es decir, si necesita que los objetos no se repitan dentro del conjunto), eche un vistazo a SplObjectStorage (php 5.3+).

1

Puede usar Set desde Nspl. Es compatible con las operaciones básicas de ajuste que tienen otros conjuntos, matrices y objetos transitables como argumentos:

$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

Si usted está buscando una estructura de datos Set sin elementos repetidos, parece que a partir de PHP 7 del SPL añade soporte para una Set estructura de datos.

Cuestiones relacionadas