使while循环变量全局化

时间:2012-10-09 23:27:31

标签: php while-loop global-variables

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

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

为什么不这样做?

4 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为上次评估循环中的条件时,mysql_fetch_array会返回FALSE$bar已分配给echo。在控件退出while循环后使用它时,这是$last = null; while ($row = mysql_fetch_array($q)) { $last = $row } var_dump($last) ed的值。要保留最后一个值,请指定循环中的另一个变量;这样,它将具有上次迭代之前条件评估为false的值,而不是之后的。例如:

{{1}}

答案 1 :(得分:1)

为什么不:

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

没有必要使$bar全局,因为mysql_fetch_rows填充了while循环中的$ bar。每次while循环运行时,$ bar的内容都会被MYSQL数据库的下一行结果替换,当mysql_fetch_rows用完行时,它会使{false}布尔值填充$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);