web-dev-qa-db-ja.com

foreachループとwhileループの結果

私は少しジレンマを抱えています、In 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 />';
}

私の質問は、本当の違いはありますか...?どちらを使うのが良いのか、両方を使うのが良いのか...これら2つのうちのいずれかは、より大きな可能性をあなたに与えますか?

15
Tomazi

この場合、それらはまったく同じです。 mysqli_resultは、Traversableインターフェースを実装し(ここに記載されているように http://www.php.net/mysqli_result )、foreachループを使用して反復できるようにします。

内部的には、mysqli_resultオブジェクトでforeachを呼び出すと、mysqli_fetch_assocへの呼び出しも実行されると思います。

最初の方法と2番目の方法のどちらを使用しても違いはないと思います。ただし、最初の方は見た目がきれいで、「もっとPHP5が多い」ように見えます。
柔軟性について言えば、最初のコードはmysqli_resultだけでなく、Traversableを実装する任意のオブジェクトでそのコードを使用できるため、確かにより柔軟性があります。

3
ItalyPaleAle

私はこれを見つけました:

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

      }

  }

}

必要な値、必要なコントロールの量、必要な場所によって異なります。

0
user2296112