2017-10-31 7 views
-1

私はこれを短くして1日を過ごさないようにしていますが、PHPの特定のプロジェクトをしばらくは続けてきました。その上に。しかし、私はグローバル変数のこのコンセプトを把握するのに苦労しているようであり、それをどのようにして私が望むやり方でうまく使用するのか、なぜそれほど確かではないのですか?PHPでのグローバル変数のキャプチャと数学

私のプログラムは、基本的にこのん:

  • は、IDの束を取り込み、グループ
  • すべての情報のレポートを持っている彼らのためにページを作成します形成、ボタンが押されたら、ダウンロードすることができます
  • ボタンを押したときにメンバの合計電流を取り込み、それをグローバル変数に変換します。グローバル変数に変換します。最後のレポート以降のメンバ変更)を取得して合計値を引いて

定義開始ページから始まる私のコードのいくつかの例グループの実際の視聴ページで

$GLOBALS['TheDifference']; //defines the variable for later use 

、それは各グループのたびに繰り返されますので、この文はforeachの中で心に留めておく

 $MemberDifference; 
     if ($MemberDifference == 0) { 
       $MemberDifference = $FailureMessage; 
     } 
//the above will be blank at first due to nothing being in it 
     $pastmembers = $GLOBALS['TheDifference']; 
     if ($pastmembers == 0) { 
      $pastmembers = $TotalMembers; 
     } 
//this activates when the variable becomes filled 
     $MemberDifference = $pastmembers - $TotalMembers; 

そして最後に、レポートページ上のボタンがクリックされたとき:

$GLOBALS['TheDifference'] = $TotalMembers; 

問題があります基本的には、私のMemberDifference変数は常に0で、希望通りには保存されていないようです(この変数の直上のコードから0が変わり、PastMembersから新しいTotalMembersを減算することになります)。

私はこれを主に説明したいと思いますが、あまりにも多くの情報であっても。 PHPは私の最高の言語ではなく、私は何かが非常にシンプルなものを見逃していると感じている間、私の人生は私の頭の中でそれを包むことができません。

ありがとうございました!

*このプログラムは本質的に少なくとも5つの異なるページで実行され、グローバル変数は私が実際にこれを行う方法として知っている唯一のものであるため、編集する必要があります。より良い方法があれば、私に教えてください!

+0

変数がどのように設定されているかを確認するために変数をエコーアウトしてみてください。 – aynber

+1

私が理解しているように、 '$ pastmembers'に' $ pastMembers'を渡し、 '$ pastmembers - $ TotalMembers'をやろうとします。ここで '$ TotalMembers'と' $ pastmembers'は同じです。それはなぜ0を示しているのですか。グローバル変数のために、より簡単な方法でセッションを使用できます。 – Vivek

+0

グローバル変数が期待通りに機能する場合、サイトのすべての訪問者は同じグローバル変数を共有します。確かにあなたが望むものではありません。 – deceze

答えて

2

これはウェブページの仕組みではなく、ページが読み込まれたときにサーバー上のスクリプトが既に終了し、変数が削除されています。

状態を持続させる必要がある場合は、グローバル変数(ただし、これらは決して必要ありません...)ではなくセッションまたはデータベースを使用してください。

セッションを使用するには、すべてのスクリプトをsession_start();で開始してから、$_SESSIONアレイを使用してデータを保存する必要があります。

+1

私は見る!私はこれを試して、それがどのように動作するかを確認します。すばやく答えてくれてありがとう! – Twitchy

+0

これは実際に私が探しているものです!あなたがおそらく知っている最後の1つの質問は、foreachでほとんどのことをやっているので、どのように私はこの$ _SESSION配列を使って、それぞれのグループに異なって適用するのですか? – Twitchy

+0

@Twitchyあなたが何を意味するかわからない、それは配列なので、必要に応じて整理できます。したがって、複数のレベルを使用して情報をグループ化し、セクションをループすることができます。 – jeroen

0

あなたは複数回の訪問で訪問者に関する情報を保持しようとしているようです。 (2つのページはHTTPセマンティクスごとに2回の訪問を構成します)。 その場合、良い解決策はPHP Sessionを学んで使用することです。

共有合計では、ファイルやSQLデータベースなどの永続ストレージを使用する必要があります。

関連する問題