2012-10-09 143 views
1

我要訪問我的while循環創建的最後一行(最後$ VAR).I've tryed saomething這樣的:使while循環變量全球

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

爲什麼不會工作?

+0

不知道你明白全球是做什麼的,肯定你爲什麼不想或不需要它。刪除該全局行,然後嘗試print_r($ bar)回顯。如果這樣做什麼都不做,那麼你的$ foo查詢可能沒有返回結果。 –

回答

1

爲什麼不:

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

我真的不知道你是與全球$酒吧做什麼,但事實只是分配一個變量,你希望它是什麼,它會保持正確的最後的值,因爲這是最後一次分配的值。

4

發生這種情況,因爲上次在你的循環中的條件進行評估,mysql_fetch_array回報FALSE,分配給$bar。在控制權退出while循環時使用它時,這是echo ed的值。要保留最後一個值,分配給循環中的另一個變量;那樣,它將具有在之前的最後一次迭代的值被評估爲false的情況,而不是之後的。例如:

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

沒有使$bar全球因爲mysql_fetch_rows填充在while循環的$欄的點。每次運行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); 
1

通過使用while循環就可以解決全局變量problem.First 取從數據庫中的數據,之後,我們在分配任何變量取值在 使用while循環。

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