【问题标题】:Necessary to store result of explode() before foreach loop?有必要在 foreach 循环之前存储explode() 的结果吗?
【发布时间】:2018-10-26 14:40:32
【问题描述】:

如果explode()的结果只用于一个循环,是否有必要存储它?

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

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

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

【问题讨论】:

  • 我更喜欢干净的代码,每行只做一件事。其他人没有。这取决于你
  • 如果您想运行一些基准测试,您可以使用microtime 来了解执行任一选项的伤害程度

标签: php loops explode


【解决方案1】:

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

1. 优化/速度:

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

2. 更简洁的代码:

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

我也想推荐this article 了解更多信息。

【讨论】:

  • @ThisGuyHasTwoThumbs 抱歉,但我想我已经在“更简洁的代码”点中提到了这一点
  • 你确实 - 毫无疑问 - 我的意思是,更清楚的是,分离变量也意味着你仍然拥有完整的字符串 :) 但我认为这是一个多余的点,将 rm :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 2014-12-05
  • 2014-01-09
  • 1970-01-01
相关资源
最近更新 更多