php - explode 是否在 foreach 中执行了不止一次?

标签 php

<分区>

$array='hello hello2';
foreach(explode(' ',$array) as $v)
 echo $v;

explode 执行了多少次?

使用另一个变量是否更好:

   $exploded = explode(...);
   foreach($exploded as $v)
      ...

?

最佳答案

它只会被执行一次。 foreach 将对 explode 的返回值副本进行操作(数组或 false)。

foreach 是一种语言结构,它期望 $array 作为 $key => $value$array 可以是任何计算结果为数组的表达式,explode 就是这样一个函数。表达式只计算一次,然后 foreach 对表达式的结果进行操作。

例如,这与常规的 for 循环不同。 for 循环采用三个表达式。循环的每次迭代都会计算第二个和第三个表达式。

因此对于 for 循环,这两个语句之间可能存在差异(将优化和 count 的 O(1) 性能放在一边):

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

关于php - explode 是否在 foreach 中执行了不止一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8201316/

相关文章:

php - MYSQL查询不是我要找的结果

php - 在PHP中获取两次之间的时间差

PHP (Symfony 4) rabbitmq 消费者命令作为守护进程

php - MYSQL echo 显示十进制和非十进制

javascript - 如何通过单击 <img > id 打开模态

php - 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 2 行的 '' '')' 附近使用的正确语法

PHPExcel内存问题

php - 我的 PHP 脚本如何判断服务器是否繁忙?

java - 如何从 php 向 java/android 发送和检索数据?

php - 如何通过内连接表进行排序