Php 使while循环变量成为全局变量

Php 使while循环变量成为全局变量,php,while-loop,global-variables,Php,While Loop,Global Variables,我想访问while循环创建的最后一行(最后一个$var)。我试过这样的方法: $bar= ""; while ($bar= mysql_fetch_array($foo)) { global $bar; } echo $bar 为什么这样不行?为什么不行: $bar = ""; $foobar = ""; while ($bar= mysql_fetch_array($foo)) { global $bar; $foobar = $bar; } echo $bar

我想访问while循环创建的最后一行(最后一个$var)。我试过这样的方法:

$bar= "";
while ($bar= mysql_fetch_array($foo)) {
    global $bar;
}
echo $bar
为什么这样不行?

为什么不行:

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

我真的不确定你在用这个全局$bar做什么,但事实是,只需指定一个你想要的变量,它将在最后保持正确的值,因为这是最后一次指定它。

发生这种情况是因为上次对循环中的条件进行评估,
mysql\u fetch\u数组
返回分配给
$bar
FALSE
。当控件退出while循环后使用它时,该值为
echo
ed。要保留最后一个值,请指定给循环中的另一个变量;这样,它将使条件之前的最后一次迭代的值计算为false,而不是之后的值。例如:

$last = null;
while ($row = mysql_fetch_array($q)) {
    $last = $row
}
var_dump($last)

没有必要将
$bar
设置为全局,因为
mysql\u fetch\u rows
会在while循环中填充$bar。每次while循环运行时,$bar的内容都会被MYSQL数据库的下一行结果替换,当
MYSQL\u fetch\u 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);

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

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

不确定你明白全球的作用,以及为什么你不想或者需要它。删除该全局行,然后尝试在回显的位置打印($bar)。如果这不起作用,那么$foo查询可能不会返回任何结果。