2011-09-07 8 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

$ report inside whileループをエコーし​​ている場合は、操作を行いますか? – mithunsatheesh

+2

PHPは、実際にはJavaのようなスコープの概念を持っていないので、これが問題になります。 '$ report'が' echo'文になるまでに宣言されていなければ、PHPは 'while'ループを最初に入力しないと思います。 – NullUserException

+0

うーん、それはうまくいきません。私は明らかに$レポートをエコーし​​ようとしているだけではなく、簡単にするためにコードをこのようにポストしています。ループの外側で変数を使用できる唯一の方法は、最初にエコーする場合です。 –

答えて

10

あなたは、例えばループの前に変数を定義しようとすることができ

私はこれがあなたを助けてくれることを願っています!

編集使用:= not + =

+0

ええ、問題は完全に解決しました。私は変数がループ内の新しい値を取ってそれを外部に保持することができると思いますが、その内部で変数を定義することはできません。大いに感謝する! –

+4

@RVwardあなたは間違っています。それらはループ内で宣言され、その外側で使用できます。ここには[証明](http://codepad.org/508BRBCi)があります。相違点は、ループの各繰り返しで上書きするのではなく、新しい値を '$ report'に連結することです。 – NullUserException

+0

@ NullUserExceptionそのコードはそこで動作しますが、$ prevDOCidをエコーし​​ようとしても、未定義の変数を与える以外は何もしません。あなたが何をしたいのか分からず、問題を解決した唯一のことはこの答えでした。興味深い@RVWard –

関連する問題