我进行了以下实验来比较数组。
1. 使用 (substr($key,0,5 == "HTTP_") & 2. 使用 (!strncmp($key, 'HTTP_', 5))
我想找出从数组中获取前几个字符的最快方法。
基准测试迭代结果是
if (substr($key,0,5 == "HTTP_").... - 0,000481 秒
if (!strncmp($key, 'HTTP_', 5)).... - 0,000405 秒
strncmp() 比 substr() 快 20% :D
<?php
function strncmp_match($arr)
{
foreach ($arr as $key => $val)
{
if (!strncmp($key, 'HTTP_', 5))
{
$out[$key] = $val;
}
}
return $out;
}
?><pre><?php
print_r(strncmp_match($_SERVER));
?></pre>
将显示如下代码
数组
(
[HTTP_ACCEPT] => XXX
[HTTP_ACCEPT_LANGUAGE] => pl
[HTTP_UA_CPU] => x64
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0
(兼容; MSIE 7.0;
Windows NT 5.1;
.NET CLR 1.1.4322;
.NET CLR 2.0.50727)
[HTTP_HOST] => XXX.XXX.XXX.XXX
[HTTP_CONNECTION] => Keep-Alive
[HTTP_COOKIE] => __utma=XX;__utmz=XX.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
)