Bol*_*ock 24 php arrays performance foreach loops
我们都听说过for循环中我们应该这样做:
for ($i = 0, $count = count($array); $i < $c; ++$i)
{
// Do stuff while traversing array
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
for ($i = 0; $i < count($array); ++$i)
{
// Do stuff while traversing array
}
Run Code Online (Sandbox Code Playgroud)
出于性能的考虑(即初始化$count会一直呼吁count()的,而不是调用只有一次,count()每条件检查).
如果foreach我在循环中执行此操作,那么它是否会产生影响:
$array = do_something_that_returns_an_array();
foreach ($array as $key => $val)
{
// Do stuff while traversing array
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
foreach (do_something_that_returns_an_array() as $key => $val)
{
// Do stuff while traversing array
}
Run Code Online (Sandbox Code Playgroud)
假设情况允许我使用?也就是说,PHP在这两种情况下只调用一次函数,还是像for第二种情况一次又一次调用函数的情况一样?
我认为测试它肯定会回答这个问题.
这是我的代码:
function GetArray() {
echo "I am called.\n";
return array("One"=>1, "Two"=>2, "Three"=>3, "Four"=>4, "Five"=>5);
}
echo "Case #1\n";
$array = GetArray();
foreach ($array as $key => $val){
// Do stuff while traversing array
echo " Inside the loop: $key => $val\n";
}
echo "\n";
echo "Case #2\n";
foreach (GetArray() as $key => $val) {
// Do stuff while traversing array
echo " Inside the loop: $key => $val\n";
}
echo "\n";
Run Code Online (Sandbox Code Playgroud)
这是结果:
Case #1
I am called.
Inside the loop: One => 1
Inside the loop: Two => 2
Inside the loop: Three => 3
Inside the loop: Four => 4
Inside the loop: Five => 5
Case #2
I am called.
Inside the loop: One => 1
Inside the loop: Two => 2
Inside the loop: Three => 3
Inside the loop: Four => 4
Inside the loop: Five => 5
他们都读了一次呼叫功能.所以没什么不同.
foreach制作输入数组的副本,并在每次迭代中处理它.所以你可以使用foreach (do_something_that_returns_an_array() as $key => $val),它只会打电话do_something_that_returns_an_array()一次.
| 归档时间: |
|
| 查看次数: |
22010 次 |
| 最近记录: |