我想访问由我的 while 循环创建的最后一行(最后一个 $var )。我尝试过这样的事情:
$bar= "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
}
echo $bar
为什么那行不通?
我想访问由我的 while 循环创建的最后一行(最后一个 $var )。我尝试过这样的事情:
$bar= "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
}
echo $bar
为什么那行不通?
发生这种情况是因为最后一次评估循环中的条件时,mysql_fetch_array
返回FALSE
,它被分配给$bar
. 当您在控制退出 while 循环后使用它时,这就是echo
ed 的值。要保留最后一个值,请分配给循环中的另一个变量;这样,它将具有条件评估为 false之前的最后一次迭代的值,而不是after。例如:
$last = null;
while ($row = mysql_fetch_array($q)) {
$last = $row
}
var_dump($last)
为什么不:
$bar = "";
$foobar = "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
$foobar = $bar;
}
echo $bar
我不太确定你在用那个全局 $bar 做什么,但事实上只是分配了一个你想要的变量,它最后会保持正确的值,因为它是最后一次分配。
通过使用while循环我们可以解决全局变量问题。首先从数据库中获取数据,然后我们将获取的值分配到任何变量中以在while循环中使用。
$bar = "" ;
while ($bar =mysql_fetch_array($foo)){
global $bar;
$foobar = $bar;
}
echo $bar;
由于在 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);