我有点困境,在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 />';
}
我的问题是,有什么真正的差异......?什么时候会更好地使用另一个或者两者都可以使用....?这两个中的任何一个是否会给你潜在的更大的可能性......?
答案 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 />";
}
}
}
我想这取决于你需要什么值,你需要多少控制,以及你需要它。