Foreach循环与while循环结果


Foreach loop vs while loop results

我有点进退两难,在PHP中,foreach循环和while循环在这种情况下似乎做了完全相同的事情:

foreach($execute->result as $item){
    echo $item['user_pass'].'<br />';
}

while($row = mysqli_fetch_assoc($execute->result)){
    echo $row['user_pass'].'<br />';
}

我的问题是有什么真正的区别。。。?什么时候用一个比另一个更好,或者两者都用可以吗。。。。?这两者中的任何一个都会给你潜在的更大的舒适性。。。?

在这种情况下,它们完全等价。mysqli_result实现Traversable接口(如本文所述:http://www.php.net/mysqli_result),因此它也可以使用CCD_ 3循环来迭代。

我想,在内部,对mysqli_result对象调用foreach也会执行对mysqli_fetch_assoc的调用。

我认为使用第一种方法或第二种方法没有任何区别;然而,第一个看起来更漂亮,在我看来"更PHP5"
说到灵活性,第一个当然也更灵活,因为您可以将该代码用于实现Traversable的任何对象,而不仅仅是mysqli_result

我发现了这个:

for vs foreach vs while哪个在php 中迭代数组更快

答案是,速度上的差异是如此之小,以至于你使用哪种都无关紧要。

我喜欢使用foreach循环来迭代返回的信息,因为我可以访问键和值,根据需要的使用,这可能很方便。

$returned = array(array("userName" => "Tim"),array("userName" => "Bob"), array("userName" => "Guy"));
foreach($returned as $L1)
{
  foreach($L1 as $L2 => $val)
  {
      if($L2 === "userName")
      {
         echo 'Hello: ' . $val . "<br />";
      }
  }
}

我想这取决于你需要什么值,你需要多少控制,以及你在哪里需要它