因此,您可以选择构建一个数组,因为您知道在代码中需要检查一下该数组中是否存在值。我看到你的方式至少有两个选择:
$values_array = array(
'my_val',
'my_val2',
'and_so_on',
);
if(in_array('my_val', $values_array)) {
var_dump('Its there!');
}
或者您可以使用关联数组并使用键来包含您的值:
$values_array = array(
'my_val' => '',
'my_val2' => '',
'and_so_on' => '',
);
if(isset($values_array['my_val'])) {
var_dump('Its there!');
}
您会选择哪种方法?为什么?您是否只是为了减少处理时间或减少使用的内存量?
也许你不会使用我的两个微不足道的方法,并有另一种很棒的方法来解决这个简单的问题。
这是一个没有真实世界应用的理论问题,但阵列中可能有数千个选项。这是一个推测性的问题,真正看到每个人都认为哪种方法更好。是否因为可读性,速度或内存使用原因而被认为是这样。
答案 0 :(得分:5)
真的?使用适合您和您的应用程序需求的变体。特别是如此少的元素,它远远超出了测量范围。
但两者之间存在真正的语义差异。第一个定义一个列表,第二个定义一个映射。如果$array
应该代表一个列表,请使用第一个列表,如果它应该代表一个地图,请使用第二个(显而易见,是吧?;))。
完全:让从不这样的微优化方法会影响您的应用程序设计。
答案 1 :(得分:3)
代码可读性和可维护性始终胜过优化。
开发人员时间浪费在试图解开故意钝的代码只是为了节省几微秒,通常超过那些保存的微秒的值。
如果你正在写一些执行速度确实足以影响这种事情的东西,那么PHP(或者实际上任何解释语言)可能是错误的语言。如果您正在尝试优化PHP代码,那么几乎肯定会有更好的起点。
答案 2 :(得分:1)
好吧,我倾向于第二个,因为我感觉感觉这个更优化。而且我经常使用它。
但是,如果它成为瓶颈,我会测量替代品。
无论如何,当我的阵列相对较小时,我永远不会想到这些东西 - 高达数百件。 无论如何,我会尽量避免在重型阵列上进行此类搜索。