: 因为我之前是写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 的话
建议会拿来做判断、运算的变量最好都先初始化
并且指定正确的资料型态