使用连接赋值运算符(.=
)初始化PHP变量会导致问题吗?我可能已经或者可能没有创建变量,但如果是,我不想覆盖变量。
如果我这样做:
$a .= "World!";
且$a
已经存在,会不会爆炸?我不想每次都做以下事情:
if(!isset($a)){
$a = "World!";
} else {
$a .= "World!";
}
答案 0 :(得分:3)
试试看?
unset($a);
$a .= 'World!'; // Notice: Undefined variable
$a = 123;
$a.= 'World!'; //$a is now '123World!';
$a = null;
$a .= 'World!'; //$a is 'World!';
ternary是一个有用的运算符。 (正如评论所示)
$a = (isset($a)) ? $a .= 'World!' : $a = 'World!'; // Will avoid a notice.
答案 1 :(得分:3)
你可以,但它会发出警告。 $a .= 'foo'
相当于$a = $a . 'foo'
。您在定义
$a = $a . 'foo';
1. ^---read value from undefined variable 'a'
2. ^---append string 'foo';
3. ^---assign value to new variable 'a'
由于PHP无法计时旅行,因此步骤#1将发出一个"未定义的变量"警告。
答案 2 :(得分:3)
如果没有像这样设置
,你可以初始化$ aisset($a) || $a = '';
$a .= "World!";
或者像这样
$a = (isset($a) ? $a : '') . 'World!';