原來 php variable scope 是這樣阿!!

太久沒寫程式了.我一直以為宣告再外面的變數就是全域變數. 看來我錯了. 只好寫一下筆記提醒一下自己. 先來個錯誤示範:

1
2
3
4
5
6
$foo = "bar";
function foobar() {
    if ($foo == "bar") {
        //.... do something
    }
}

上面的範例 $foo 不是 “bar” 所以會沒辦法進去那個 if 判斷式. 要改寫為下面才正確 :

1
2
3
4
5
6
7
$foo = "bar";
function foobar() {
    global $foo;
    if ($foo == "bar") {
        //.... do something
    }
}

我debug很久才發現. @@”