2011-09-07 71 views
7

關於PHP範圍的小問題,我似乎無法在while循環之外調用變量$ report。我嘗試了各種各樣的東西,包括return。這不起作用,這裏工作的唯一兩個功能是如果我echo變量$report裏面的循環,或者如果我print它。儘管它解決了這個問題,但我不想在用戶的屏幕上隨意亂寫。在while循環之外使用一個變量(範圍)

我一直在四處尋找過去15分鐘左右的時間,而且在這裏我還沒有看到任何問題。

任何幫助,將不勝感激。

<? 
require "functions2.php"; 
require "members.php"; 
$query = "SELECT MAX(DOCid) as prevDOCid from reports"; 
$result = mysql_query($query); 

while ($row = mysql_fetch_array($result)) { 
    $prevDOCid = $row[prevDOCid]; 

$thisDOCid = $prevDOCid+1; 
$report = "a"."b".$thisDOCid; 


} 
echo $report; 
?> 
+0

如果您在while循環中回顯$ report,您會得到任何操作嗎? – mithunsatheesh

+2

PHP實際上並沒有像Java那樣的範圍概念,這是一個問題。如果'$ report'在你到達'echo'語句的時候沒有聲明,我猜PHP首先不會進入while循環。 – NullUserException

+0

嗯,它不工作。我顯然不只是試圖迴應$報告,我只是爲了簡單起見而以這種方式發佈代碼。我可以在循環外部使用變量的唯一方法是如果我先回顯它。 –

回答

10

您可以嘗試在循環前定義變量,例如,

$report = ""; 
while ($row = mysql_fetch_array($result)) { 
    $report .= "a"."b".$row["prevDOCid"]+1; 
} 
echo $report; 

我希望這可以幫助你!

編輯使用。= not + =

+0

是啊完美地解決了這個問題。我想變量可以在循環中取得新的值,並將它們保留在它之外,但是它們不能在其中定義。萬分感謝! –

+4

@RVward你錯了。它們*可以在循環中聲明並在其外部使用。這是[證明](http://codepad.org/508BRBCi)。不同之處在於它將新值連接到'$ report',而不是僅僅在循環的每次迭代中覆蓋它。 – NullUserException

+0

@NullUserException代碼在那裏工作,但即使當我嘗試echo $ prevDOCid時,它也不會執行任何操作,除非給出未定義的變量。不知道你要我做什麼,唯一解決問題的就是這個答案。 –