爆炸会不会在foreach中执行多次?

dyn*_*mic 6 php

$array='hello hello2';
foreach(explode(' ',$array) as $v)
 echo $v;
Run Code Online (Sandbox Code Playgroud)

爆炸多少次被执行?

使用另一个var更好吗?

   $exploded = explode(...);
   foreach($exploded as $v)
      ...
Run Code Online (Sandbox Code Playgroud)

kni*_*ttl 8

它只执行一次.foreach将操作一个返回值explode(数组或假)的副本.

foreach是一种期望的语言结构$array as $key => $value.$array可以是任何计算结果的表达式,并且explode是这样的函数.表达式仅计算一次,然后foreach对表达式的结果进行操作.

例如,这与常规for循环不同.一个for循环需要三个表达式.针对循环的每次迭代计算第二和第三表达式.

因此,对于for循环,这两个语句之间可能存在差异(保留优化和O(1) - 性能count除外):

for($i = 0; $i < count($array); ++$i) { … }
// vs.
for($i = 0, $c = count($array); $i < $c; ++$i) { … }
Run Code Online (Sandbox Code Playgroud)