未使用的foreach循环性能影响?

时间:2014-01-21 13:54:58

标签: php performance loops foreach

我有一个关于foreach循环的问题,我正在研究使用DOM的情境XML解析器(实质上,它在XML中寻找一些硬编码的值)。有没有人知道foreach循环的系统性能影响实际上并没有被调用?

仅供参考,我正在查看至少两种离散类型的XML文件,每种文件本身都有许多循环,我想使用相同的解析文件来查看每个文件。

因此,例如,它会查看具有一个函数的树,然后查看另一个树。运行.php文件的结果是什么,该文件包含响应两者的信息,但只是恰当地选择其中一个?

例如,如果我调用foreach($ foo为$ bar),但没有$ bar,那么在foreach循环中运行的代码会发生什么?我很确定它会输出一个错误(虽然这会在报告方面被抑制),但PHP的性能会因为它解析其中的代码而受到影响吗?

我可能有点不清楚;我可能在某个地方使用了错误的术语,所以我将做一个总结:

涉及不存在的关联数组的foreach循环是否会对性能产生影响。

作为参考,我想在此页面上执行与清单2中的示例类似的操作:http://www.ibm.com/developerworks/library/os-xmldomphp/

如果XML文件中没有书籍输入“清单2”示例,是否会出现重大问题,或者PHP会简单地移动(非致命错误对我来说很好),或者性能受到了打击?

1 个答案:

答案 0 :(得分:1)

我对这种情况的理解是,它实际上永远不会在foreach()循环内部进行执行。

但是,代码在磁盘空间方面占用的实际字节数将被加载到内存中,以便在成功输入foreach()

后可以处理它

我个人在一个出现所有错误的环境中开发,这样我就可以确保我的代码在生产中非常坚固。

如果我期待一个数组或对象,那么我通常会实现这个:

// check for the existence of $foo and make sure it is loop-able
// being loop-able means $foo is either and array or object and contains at least one item/element
if((is_array($foo) || is_object($foo)) && count($foo) > 0)
{
    foreach($foo as $bar)
    {
    }
}

总体而言,您的问题/关注与微优化一致,当您进行微优化时,没有人会赢。只需确保您的代码易于为未来的开发人员理解,并在必要时重新考虑它。