Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach循环与while循环结果_Php_Sql_Foreach_While Loop - Fatal编程技术网

Php Foreach循环与while循环结果

Php Foreach循环与while循环结果,php,sql,foreach,while-loop,Php,Sql,Foreach,While Loop,我有点进退两难,在PHP中,foreach循环和while循环在这种情况下似乎做了完全相同的事情: foreach($execute->result as $item){ echo $item['user_pass'].'<br />'; } foreach($execute->result as$item){ echo$item['user_pass'].; } 及 while($row=mysqli\u fetch\u assoc($execute->resul

我有点进退两难,在PHP中,foreach循环和while循环在这种情况下似乎做了完全相同的事情:

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

while($row=mysqli\u fetch\u assoc($execute->result)){
echo$row['user_pass'].
; }

我的问题是有什么真正的区别吗。。。?什么时候用一个比另一个好,或者两者都用好。。。。?这两者中有哪一个能给你潜在的更大的感受性…?

在这种情况下,它们是完全等效的。
mysqli\u结果
实现了
Traversable
接口(如本文所述),因此也可以使用
foreach
循环对其进行迭代

我假设,在内部,对
mysqli\u结果
对象调用
foreach
也执行对
mysqli\u fetch\u assoc
的调用

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

答案是速度上的差异是如此之小,以至于你使用哪一种都无关紧要

我喜欢使用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 />";

      }

  }

}
$returned=array(array(“userName”=>“Tim”)、array(“userName”=>“Bob”)、array(“userName”=>“Guy”);
foreach($L1返回)
{
foreach($L1为$L2=>$val)
{
如果($L2==“用户名”)
{
回音“你好:”.$val.“
”; } } }

我想这取决于您需要什么值、需要多少控制以及需要它的位置。

不确定,我总是使用while循环来选择数据库。我不认为这个问题与发布的问题是重复的。@Qualcuno实际上,您是对的。更像是您在回答中提到的
(可遍历)
的副本。如果OP希望它重新打开,他/她可以质疑它。@Fred ii-它更类似于此,但我认为它仍然有一些独特性,因为它谈论的是一个特定的类。哇,伙计们,我的问题是这些循环在给定情况下的行为……这里的关键情况和我的问题可能与其他人相似,但在某种程度上是独特的。但是谢谢你们试着回答我的问题:)这与
有什么不同,而
每一个
我只是说我喜欢用什么,并提供另一篇关于快速性的文章。别担心,哈哈。起初我认为链接很有用,但计时结果可能不适用于这种情况:$result不是数组,它是一个理解
mysqli\u fetch\u assoc()
的对象。计时可能由每次迭代的
fetch_assoc
决定,而不是由任何循环开销决定。从理论上讲,迭代列表元素,然后测试我们是否在列表的末尾,然后迭代到下一个元素,似乎更干净,所以我同意。
$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 />";

      }

  }

}