好吧,一个区别是它只适用于数组(好吧,只有正确工作)。 将处理实现可遍历
接口的任何对象(当然包括内置数组类型)。each()
foreach
在前方可能有一个微观优化。基本上,foreach 等同于以下内容:
$array->rewind();
while ($array->valid()) {
$key = $array->key();
$value = $array->current();
// Do your code here
$array->next();
}
而基本上执行以下操作:each
$return = $array->valid() ? array($array->key(), $array->current()) : false;
$array->next();
return $return;
因此,两者的三条线是相同的。它们都非常相似。可能有一些微优化,不需要担心界面...但这充其量只是次要的。但它也将通过执行布尔转换和检查php代码与编译的C来抵消...更不用说在你的代码中,你调用两种语言构造和一个函数,而用它是一个单一的语言构造......each
traversable
foreach
while/each
foreach
更不用说恕我直言,这是更具可读性的...因此,更容易阅读,更灵活意味着 - 对我来说 - 是明显的赢家。(这并不是说它没有用途,但就我个人而言,我从来不需要它)......foreach
foreach
each