这个foreach循环负责上帝杀死猫吗?
从采取从https://stackoverflow.com/questions/4891301/top-bad-practices-in-php
这种类似的代码也是杀小猫吗?
foreach (file("longFile.txt") as $line) {
// ouch! Kitten killed
}
??
对于那些不知道我在说什么的人:
PHP每次进入文件的下一行或是否都收到longFile.txt? 谈论这个代码:
foreach (file("longFile.txt") as $line) {
// something
}
在链接问题中, for
循环通过在每次迭代中调用count
来引发性能问题。 foreach
使用内部指针遍历传递给它的数组。
在你的例子中, file()
将被调用一次,结果数组将被传递给foreach
,它将遍历它,因此小猫被保存。 快乐的星期六!
它不应该杀死任何小猫,因为为了让PHP获得文件的以下行,它必须知道自从上一行被移除后的文件指针的位置。 你只是推进迭代器,它维护对文件对象的引用。
另外,打开这样的文件是不好的做法; 你应该有一个变量来存储它,完成后关闭它。
您想使用Duff设备展开循环:http://de.wikipedia.org/wiki/Duff%E2%80%99s_Device。 这会比foreach更快,然后循环更快,而无需在每次迭代中使用count(),并且它会更快地连接和rtrim字符串,但与使用implode()相同。
链接地址: http://www.djcxy.com/p/10141.html