有没有办法让这个更快?如何使PHP中的数组循环更快
while ($item = current($data))
{
echo '<ATTR>',$item, '</ATTR>', "\n";
next($data);
}
我不喜欢我需要创建像$ item这样的新变量。
有没有办法让这个更快?如何使PHP中的数组循环更快
while ($item = current($data))
{
echo '<ATTR>',$item, '</ATTR>', "\n";
next($data);
}
我不喜欢我需要创建像$ item这样的新变量。
<?php
$transport = array('foot', 'bike', 'car', 'plane');
foreach ($transport as $value) {
echo $value;
}
?>
你可以做一个foreach,但是你会创建2个新的变量。除非你不喜欢在while()子句中分配变量的想法。
foreach($data as $key => $value)
{
echo $key . " => ".$value;
}
无论哪种方式,你都需要创建一个实际的变量。
如果您不希望创建临时变量,像这样做:
while (current($data))
{
echo '<ATTR>',current($data), '</ATTR>', "\n";
next($data);
}
不过,我不知道这是否会真正使任何更快。他们只能通过一个分析器来辨别,但是这是一种微型优化,我怀疑你会注意到它的不同之处。
加速循环的最佳方法是使用更快的计算机。
如果你所做的只是上面的代码,你可以使用implode语句。
if (count($data) > 0) {
echo "<ATTR>".implode("</ATTR>\n<ATTR>", $data)."</ATTR>";
}
$ nl =“\ n”;;
while ($item = current($data))
{
echo '<ATTR>',$item, '</ATTR>',$nl;
next($data);
}
将换行符存储到变量中,而不是让PHP在每次迭代中解析双引号。
这个怎么样:
function my_func($str) {
echo "<attr>{$str}</attr>\n";
}
array_map('my_func', $data);
(应该工作,但我很好奇它的速度与foreach
环比)
或者,如果你正在使用PHP> = 5.3 (可能不是你的情况,顺便说一句),您可以使用这一个,基于lambda函数:
array_map(function ($item) {
echo "<attr>{$item}</attr>\n";
}, $data);
几乎相同,但没有不得不在程序中声明一次函数。
实际上,您根本不需要$ item声明。 – 2009-07-21 01:56:47
难道你只需要把$ item = current($ data)而不是语句放在while中? – 2009-07-21 02:00:01
我使用microtime检查速度。看起来,使用“while(current($ data))”比“while($ item = current($ data))”要慢,但是很少。使用foreach要快得多。 – 2009-07-21 02:27:09