2014-10-10 288 views
11

我都有点两难,在PHP都foreach循环和while循环似乎做同样的事情在这种情况下:的foreach循环VS while循环导致

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

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

我的问题是有没有真正的区别...?什么时候使用一个优于另一个,或者同时使用两个都可以。这两个中的任何一个都会给你带来更大的可能性......?

+0

不知道,我总是使用while循环进行数据库选择 – boomoto 2014-10-10 13:46:39

+1

虽然我不认为这个问题是发布的问题的重复。 – Qualcuno 2014-10-10 13:49:07

+0

@Qualcuno其实,你是对的。更像是您在答案中提及'(Traversable)'的http://stackoverflow.com/questions/3304885/whilelistkey-value-eacharray-vs-foreacharray-as-key-value的副本。如果OP希望重新开放,他/她可以参与竞争。 – 2014-10-10 13:52:19

回答

2

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

我猜想,在内部,一个mysqli_result调用对象的foreach执行情况,以mysqli_fetch_assoc呼叫为好。

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

+0

从哲学上讲,似乎更清晰地遍历列表元素,然后测试我们是否在列表的末尾,然后迭代到下一个元素,所以我同意。 – 2015-12-30 22:54:29

0

我发现这一点:

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 />"; 

     } 

    } 

} 

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

+1

与“while”和“each”有什么不同 – 2014-10-10 14:44:18

+0

我只是说明我喜欢用什么,并提供其他帖子提供的快速内容。没有牛,哈哈。 – user2296112 2014-10-12 02:48:07