我想访问我的while循环创建的最后一行(最后一个$var)。我试过这样的事情:
$bar= "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
}
echo $bar
为什么行不通?
发生这种情况是因为上次评估循环中的条件时,mysql_fetch_array
返回FALSE
,分配给$bar
。当您在控件退出 while 循环后使用它时,这是echo
ed 的值。要保留最后一个值,请分配给循环中的另一个变量;这样,它将具有条件评估为 false 之前的最后一次迭代的值,而不是之后的值。例如:
$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;
$bar
全局化是没有意义的,因为mysql_fetch_rows
填充了 while 循环中的$bar。每次运行 while 循环时,$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);