我有点进退两难,在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 />";
}
}
}
我想这取决于你需要什么值,你需要多少控制,以及你在哪里需要它