的foreach循环VS while循环导致
我都有点两难,在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 />';
}
我的问题是有没有真正的区别...?什么时候使用一个优于另一个,或者同时使用两个都可以。这两个中的任何一个都会给你带来更大的可能性......?
在这种情况下,它们完全等价。 mysqli_result
实现了Traversable
接口(如此处所述:http://www.php.net/mysqli_result),因此它也可以使用foreach
循环进行迭代。
我猜想,在内部,一个mysqli_result
调用对象的foreach
执行情况,以mysqli_fetch_assoc
呼叫为好。
我不认为使用第一种方法或第二种方法没有任何区别;然而,第一个看起来更漂亮,更“PHP5”给我!
说到灵活性,第一个灵活性当然更好,因为您可以将该代码用于实现Traversable
而不仅仅是mysqli_result
的任何对象。
从哲学上讲,似乎更清晰地遍历列表元素,然后测试我们是否在列表的末尾,然后迭代到下一个元素,所以我同意。 – 2015-12-30 22:54:29
我发现这一点:
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 />";
}
}
}
我想这取决于你需要什么样的价值,你需要多少控制,以及你需要它的地方。
与“while”和“each”有什么不同 – 2014-10-10 14:44:18
我只是说明我喜欢用什么,并提供其他帖子提供的快速内容。没有牛,哈哈。 – user2296112 2014-10-12 02:48:07
不知道,我总是使用while循环进行数据库选择 – boomoto 2014-10-10 13:46:39
虽然我不认为这个问题是发布的问题的重复。 – Qualcuno 2014-10-10 13:49:07
@Qualcuno其实,你是对的。更像是您在答案中提及'(Traversable)'的http://stackoverflow.com/questions/3304885/whilelistkey-value-eacharray-vs-foreacharray-as-key-value的副本。如果OP希望重新开放,他/她可以参与竞争。 – 2014-10-10 13:52:19