填充PHP数组:首先检查索引?

Ben*_*lap 5 php optimization readability

如果我深陷在一个循环的巢中,我想知道哪些更有效:

if (!isset($array[$key])) $array[$key] = $val;
Run Code Online (Sandbox Code Playgroud)

要么

$array[$key] = $val;
Run Code Online (Sandbox Code Playgroud)

就可读代码而言,第二种形式更为可取.实际上,名称更长,数组是多维的.因此,第一个表单最终在我的程序中看起来非常粗糙.

但我想知道第二种形式是否会变慢.由于代码是程序中最常执行的函数之一,我想使用更快的形式.

一般来说,此代码将使用相同的"$ key"值执行多次.所以在大多数情况下,$ array [$ key]已经设置好了,而isset()将返回FALSE.

为了澄清那些担心我将不相同的代码视为相同的人:就程序的这一部分而言,$ val是一个常数.直到运行时才知道它,但它在程序的早期设置,并且在此处不会更改.因此两种形式都会产生相同的结果.这是获得$ val最方便的地方.

Zan*_*ynx 10

对于你真正想要的数组:array_key_exists($key, $array)而不是isset($array[$key]).


war*_*ren 1

比较的开销(可能是真的,也可能不是)似乎应该需要更长的时间。

在两种配置中运行脚本会显示什么性能时间?