我想访问我的while循环创建的最后一行(最后一个$ var)。我尝试过这样的东西:
$bar= "";
while ($bar= mysql_fetch_array($foo)) {
global $bar;
}
echo $bar
为什么不这样做?
答案 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);