从优化和最佳实践角度来看,我应该在设置之前检查数组键是否已设置。
我很高兴覆盖这个价值 - 所以要么适合我的目的。
在这个简单的例子中,我知道我的数组应该具有什么值,并且我没有问题覆盖键值。
$array = array(
'A' => 'B'
);
$key = 'A';
$value = 'B';
//...
选项1。
//...
if(!isset($array[$key])) {
$array[$key] = $value;
}
选项2。
//...
$array[$key] = $value;
是否有更多的开销调用 isset ,或在数组中设置值?
答案 0 :(得分:0)
嗯,我不知道有很多具体的细节,但如果有差异,我高度怀疑它是否会引人注意。如果我们从逻辑的角度来看这两个比较:
1)价值是否存在? 2a)如果是,则覆盖。 2b)如果不是,请跳过。
1)覆盖值。
参数可以以任何一种方式进行,因为资源被用于检查然后覆盖。所以实际上,您正在执行与第二个选项相同的步骤,但添加了if语句。按照这个逻辑,只是覆盖HAS更快。有意义吗?
使用我们的第二个选项,我们所做的只是覆盖。首先,我们检查AND覆盖。因此,如果你确定你将主要是压倒一切,那么第二种选择可能是最好的。如果您认为值将一致地改变,那么请转到if语句。
你必须深入研究才能找到确切的时差。
希望我帮助过。