是否需要在 foreach 循环之前存储 explode() 的结果?

Necessary to store result of explode() before foreach loop?

如果只用于循环,是否需要存储 explode() 的结果?

$lines = explode(PHP_EOL, $data);
foreach ($lines as $line) {
    // do stuff
}

有什么理由不在循环内直接调用吗? explode() 会被调用一次,还是每次迭代都会被调用?

foreach (explode(PHP_EOL, $data) as $line) {
    // do stuff
}

explode() 只会在你的 foreach 循环中被调用一次,如果你有一个非常大的代码,你将有两个选择:

1. Optimization/Speed:

每个变量保存一些字节的内存,所以如果你有一个大的网络应用程序,我建议在 foreach 中调用 explode(),但如果你的应用程序不是那么大,我不认为分配一些字节会有什么坏处。

2. 更简洁的代码:

第二个选项,是一个干净的代码,如果你把你的explode分配给一个变量,它对以后的使用很有用,而且也更容易调试。

我还想推荐 this article 以获取更多信息。