PHP中的键与in_array()的微优化

Tre*_*non 0 php optimization micro-optimization

因此,您可以选择构建数组,因为您知道在代码中需要检查数组中是否存在值.我看到它的方式至少有两个选择:

$values_array = array(
    'my_val',
    'my_val2',
    'and_so_on',
);

if(in_array('my_val', $values_array)) {
    var_dump('Its there!');
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用关联数组并使用键来包含您的值:

$values_array = array(
    'my_val'    => '',
    'my_val2'   => '',
    'and_so_on' => '',
);

if(isset($values_array['my_val'])) {
    var_dump('Its there!');
}
Run Code Online (Sandbox Code Playgroud)

你会选择哪种方法?为什么?您是否只是为了减少处理时间或减少使用的内存量?

也许你不会使用我的两个微不足道的方法,并有另一种很棒的方法来解决这个简单的问题.

这是一个没有考虑真实世界应用的理论问题,但阵列中可能有数千个选项.这是一个推测性的问题,真正看到每个人都认为哪种方法更好.是否因为可读性,速度或内存使用原因而被认为是这样.

Kin*_*nch 5

真?使用适合您和您的应用程序需求的变体.特别是如此少的元素,它远远超出了测量范围.

但两者之间存在真正的语义差异.第一个定义一个列表,第二个定义一个映射.如果$array应该代表一个列表,使用第一个,如果它应该代表一个地图,使用第二个(显而易见,是吧?;)).

完全:永远不要让这种微优化方法影响您的应用程序设计.