4

while ループ (最後の $var ) によって作成された最後の行にアクセスしたい。私はこのようなことを試しました:

$bar= "";
while ($bar= mysql_fetch_array($foo)) {
    global $bar;
}
echo $bar

なぜそれがうまくいかないのですか?

4

4 に答える 4

5

これは、ループ内の条件が最後に評価されたときにmysql_fetch_arrayが返されFALSE、これが に割り当てられているために発生してい$barます。制御が while ループを抜けた後に使用すると、その値がechoed になります。最後の値を保持するには、ループ内の別の変数に割り当てます。そうすれば、条件が false と評価されるではなく、最後の反復の値になります。例えば:

$last = null;
while ($row = mysql_fetch_array($q)) {
    $last = $row
}
var_dump($last)
于 2012-10-09T23:34:43.960 に答える
1

while ループを使用することで、グローバル変数の問題を解決できます。最初にデータベースからデータをフェッチし、その後、while ループで使用する任意の変数にそのフェッチ値を割り当てます。

$bar = "" ; 
while ($bar =mysql_fetch_array($foo)){ 
global $bar; 
$foobar = $bar;
} 
echo $bar;
于 2012-10-10T04:41:23.497 に答える
1

なぜだめですか:

$bar = "";
$foobar = "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
$foobar = $bar;
}
echo $bar

そのグローバル $bar で何をしているのかはよくわかりませんが、実際には、変数を希望どおりに割り当てるだけで、最後に割り当てられるため、最後に正しい値のままになります。

于 2012-10-09T23:33:16.790 に答える
0

while ループで $bar を設定する$barため、グローバルにする意味はありません。mysql_fetch_rowswhile ループが実行されるたびに、$bar の内容は MYSQL データベースからの結果の次の行に置き換えられ、行がなくなると、偽のブール値mysql_fetch_rowsで埋められます。$bar

$bar =""; // Value of $bar is "".

while ($bar = mysql_fetch_array($foo)) {
$bar // $bar is an array with a row from $foo
}
// mysql_fetch_array return false and the while loop was aborted, so we end up here
echo $bar // $bar is now false. 

データベースから取得したすべての行にアクセスしたい場合は、次のようにすることができます。

$foobar = array();
while ($bar = mysql_fetch_array($foo)) {
$foobar[] = $bar;
}
//Dostuff with $foobar, ex print_r($foobar);
于 2012-10-10T00:52:47.237 に答える