: 因為我之前是寫Java的
Java 算是強型別的程式語言 (strong type)
而 PHP 則是弱型別 (weak type)
二者不太能互相比較
: 但是在PHP內
: 變成是要直接給變數然後給值初始化
: 如果沒有給值就等於null
: $x; //這樣有寫跟沒寫一樣,值也是null
: $x = 10; //正常
寫個程式做檢查,這邊先把 error_reporting 打開:
<?php
error_reporting(E_ALL);
var_dump($x);
執行後會出現訊息:
PHP Notice: Undefined variable: x in /home/johnroyer/tmp/qwe.php on line 5
NULL
所以其實 PHP 是會檢查變數是否有被初始化的
只是即使沒有被初始化也是可以照常拿來使用 .... 然後可能就踩到雷 XD
例如拿沒有初始化的變數去其他函式使用:
$list = [1, 2, 3];
array_merge($list, $undefined);
語法上來講沒有任何問題
但是執行的時候就會有 runtime error :
PHP Warning: array_merge(): Argument #2 is not an array
以個人經驗
如果希望程式可以避開 runtime error 的話
建議會拿來做判斷、運算的變數最好都先初始化
並且指定正確的資料型態