是否需要在 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 以获取更多信息。
如果只用于循环,是否需要存储 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 以获取更多信息。