У меня действительно действительно трудное время, чтобы понять ваш вопрос.Вот по сути то, что я понял:
Мне нужно поддерживать правильный набор, в котором нет двух одинаковых элементов.
PHP не имеет тип набора, недаже в SPL!Мы можем подражать функциональности набора, но любое решение, которое я могу придумать, не является приятным.Вот что я считаю самым чистым:
<?php
class Set {
private $elements = array();
public function hasElement($ele) {
return array_key_exists($ele, $elements);
}
public function addElement($ele) {
$this->elements[$ele] = $ele;
}
public function removeElement($ele) {
unset($this->elements[$ele]);
}
public function getElements() {
return array_values($this->elements);
}
public function countElements() {
return count($this->elements);
}
}
Пример использования:
<?php
$animals = new Set;
print_r($animals->getElments());
$animals->addElement('bear');
$animals->addElement('tiger');
print_r($animals->getElements());
$animals->addElement('chair');
$animals->removeElement('chair');
var_dump($animals->hasElement('chair'));
var_dump($animals->countElements());