Foreach循环vs while循环结果

时间:2014-10-10 13:44:35

标签: php sql foreach while-loop

我有点困境,在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 />';
}

我的问题是,有什么真正的差异......?什么时候会更好地使用另一个或者两者都可以使用....?这两个中的任何一个是否会给你潜在的更大的可能性......?

2 个答案:

答案 0 :(得分:3)

在这种情况下,它们完全相同。 mysqli_result实现了Traversable接口(如此处所述:http://www.php.net/mysqli_result),因此也可以使用foreach循环进行迭代。

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

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

答案 1 :(得分:1)

我发现了这个:

for vs foreach vs while which is faster for iterating through arrays in 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 />";

      }

  }

}

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