在使用数组php之前声明数组更快吗?
例如,声明一个数组然后设置一个值是否更快:
$arr = [];
$arr['foo'] = 'bar';
Run Code Online (Sandbox Code Playgroud)
或者直接跳到设置值而不首先声明对象:
$arr['foo'] = 'bar';
Run Code Online (Sandbox Code Playgroud)
请注意,我不希望做到以下几点:
$arr = ['foo' => 'bar'];
Run Code Online (Sandbox Code Playgroud)
我总是声明,因为我不想遇到未定义的变量错误.但我也很好奇.我们来试试吧!
$size = 1000000;
$start_time = microtime(true);
for($i=1;$i<=$size;$i++):
$arr = [];
$arr['foo']='bar';
unset($arr);
endfor;
$results['declare first'] =
floor((microtime(true)-$start_time) * 1000).' milliseconds';
unset($arr, $i, $start_time);
$start_time = microtime(true);
for($i=1;$i<=$size;$i++):
$arr['foo']='bar';
unset($arr);
endfor;
$results['do not declare'] =
floor((microtime(true)-$start_time) * 1000).' milliseconds';
print_r($results);
Run Code Online (Sandbox Code Playgroud)
我PC上的典型结果:Win 7 x64上的PHP 5.6.23:
[
'declare first' => '464 milliseconds',
'do not declare' => '376 milliseconds',
]
Run Code Online (Sandbox Code Playgroud)
100万次操作后100毫秒的差异意味着除非你有数百万个数组,否则你基本上不会注意到差异.所以首先申报:-)