短路问题问我已经知道了。但我想知道为什么它在这里不起作用。由于并行处理或流水线,短路是否有一些影响。
我的代码遇到了非常奇怪的情况。代码看起来像这样
foreach($feeds as $k=>$feed)
{
foreach($filtered as $item)
{
if(($feed['object'] == $item['object']) && (($feed['time']-$item['time'])<10))
{
Code....
}
}
}
当我将两个条件都放在同一个If()
块中时,它们都会被比较。但是当我将它们放在嵌套块中时,它们执行的时间要少得多。
问题: && 是否作为短路运算符工作。也就是说
如果 $feed['object'] == $item['object']
失败
($feed['time']-$item['time'] < FEED_TIME)
不会被评估。
cond2
即使cond1
失败,PHP 也会进行评估。
你能解释一下 && 在 PHP 中是如何工作的吗?
基准
使用上面的代码,如果执行大约 61000 次。整个网站执行需要 27 秒。
使用嵌套条件大约 10000 次执行condtion2
$feeds
大约有 1700 个条目,其中$filtered
392 个条目。
谢谢