【发布时间】:2016-07-20 16:39:24
【问题描述】:
假设我需要在数组中添加和删除元素,它们必须是唯一的。
Class A {
protected $elements = [];
function add($element) {
if (!in_array($element, $this->elements)) {
$this->elements[] = $element;
}
}
function remove($element) {
if (($key = array_search($element, $this->elements)) !== false) {
unset($this->elements[$key]);
}
}
}
这看起来不错,但如果$elements 中有大量元素,PHP 将需要在每次调用add() 或remove() 时进行迭代。相反,我可以这样做:
Class A {
protected $elements = [];
function add($element) {
$this->elements[$element] = true;
}
function remove($element) {
unset($this->elements[$element]);
}
}
无论元素数量如何,哪个应该以相同的速度执行,但我可能完全错了,这就是这个问题的重点。
我一直在我的代码中到处做这件事,但让我烦恼的是,我存储了一堆无用的信息(在这个例子中是一些 true 布尔值),这些信息完全没有用,但没有它们就不行.这似乎是某种缺陷,让我觉得这种方法并不像我想象的那样完全防弹。
这种将信息存储在数组中的方式是否比我认为正确的方式,第一个示例更好,除了存储不必要的信息之外,它有什么缺点吗? p>
【问题讨论】:
标签: php arrays internal internals