わかりやすいグローバル変数の使い方が出ているサイトはここです。
PHP:変数のスコープ:グローバル変数を使う際の注意点:global他にもあるのでしょうけれども、最初に検索したこのサイトで問題が解決したので、今のところはこのサイトがベストアンサーサイトですね。
これ引用です。当初これを知らなかったので、関数内部で変数宣言をするのはおかしいので、ルート上?プログラムの一番最初に全部のグローバル変数の宣言をしてしまったほうが合理的だろうと考えたのですが、PHPにおいてはこれが間違いだったようであります。
PHPでは、グローバル変数は、関数の内部で使用する場合、関数の内部でグローバルとして宣言する必要があります。
以下はダメな例
<?php
$a = 1; /* グローバルスコープ */
function Test() {
echo $a; /* ローカルスコープ変数の参照 */
}
Test();
?>
以下が正しい例<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
そして私がやった失敗例
<?php
//↓関数内でいちいち変数宣言するのが面倒なので、ここで宣言してしまう。
global $a, $b;
//エラーにはならないけど変数には値が入らない。
$a = 1;
$b = 2;
function Sum()
{
$b = $a + $b;
}
Sum();
echo $b;
?>
ということで、本日は元に戻す作業をやりたいと思います。「履歴は取ってなかったのか?!」と突っ込みをいれられそうですが、「はい、舐めておりました。履歴を取るほどではないと思いこんでいたのであります。」ということで、全部問題なく稼働させるには今日一日はかかるかも知れません。履歴は取っておくべきだったのですが、何しろウン十年ぶりのプログラミングなので、本当は履歴を取るということ自体も忘れていたというのが正直なところであります。いやはやです。
0 件のコメント:
コメントを投稿