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之前的最后一次迭代的值,而不是after。例如:

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

为什么不:

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

我不太确定你在用那个全局 $bar 做什么,但事实上只是分配了一个你想要的变量,它最后会保持正确的值,因为它是最后一次分配。

于 2012-10-09T23:33:16.790 回答
1

通过使用while循环我们可以解决全局变量问题。首先从数据库中获取数据,然后我们将获取的值分配到任何变量中以在while循环中使用。

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

由于在 while 循环中填充了 $bar ,因此没有必要进行$bar全局设置。mysql_fetch_rows每次 while 循环运行时,$bar 的内容都会被 MYSQL 数据库中的下一行结果替换,当mysql_fetch_rows行数用完时,它会填充$bar一个 false 布尔值。

$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 回答