使 while 循环变量全局化



我想访问我的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);

相关内容

  • 没有找到相关文章

最新更新