2012-03-19 18 views
0

PHPはこの例をデータベースデータを取得する方法として挙げています。whileループのインデックスはこのPHPスニペットのどこで変更されますか?

<?php 
$return = [] 
$qry = "SELECT * FROM exp_member_data"; 
$res = mysql_query($mem_qry); 

function mysql_fetch_all($res) { 
    while($row=mysql_fetch_array($res)) { 
     $return[] = $row; 
    } 
    return $return; 
} 
?> 

このループがどのように進行するのか混乱します。 whileループの繰り返しごとに$row=mysql_fetch_array($res)が異なることを保証するものはありますか? the docsから

答えて

2

は...内部のデータポインタを前に進め。

だから、それは次の行を取得するだけで、それは異なるになることを保証するものではありません。

+0

大丈夫ですので、PHPの抄録では、その実装内でポインタを先に動かしています。 –

0

php.netで見た目ができます:

Description: 
    array mysql_fetch_array (resource $result [, int $result_type = MYSQL_BOTH ]) 

Returns an array that corresponds to the fetched row and moves the internal data pointer ahead. 

HTH

0

私は正確にmysql_fetch_arrayを知りませんが、あなたは、このようなパターンを見たときにフェッチ機能が副作用を持っているので、一般的にそれはですイテラブルを通してカーソルを進めること。 iterableの最後で、mysql_fetch_arrayは、falseと評価される値を返し、ループは終了します。

$a = $bの値は$bの値であるため、$rowの割り当てをwhile条件に入れるのはこのためです。

関連する問題