我可以使用concat赋值运算符初始化PHP变量吗?

时间:2015-07-02 18:47:27

标签: php concatenation

使用连接赋值运算符(.=)初始化PHP变量会导致问题吗?我可能已经或者可能没有创建变量,但如果是,我不想覆盖变量。

如果我这样做:

$a .= "World!";

$a已经存在,会不会爆炸?我不想每次都做以下事情:

if(!isset($a)){
    $a = "World!";
} else {
    $a .= "World!";

}

3 个答案:

答案 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)

如果没有像这样设置

,你可以初始化$ a
isset($a) || $a = '';
$a .= "World!";

或者像这样

$a = (isset($a) ? $a : '') . 'World!';