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

Can I initialize a PHP variable with a concat assignment operator?

使用串联赋值运算符 (.=) 初始化 PHP 变量会导致问题吗?我所处的情况可能已经创建了变量,也可能没有创建变量,但如果已经创建,我不想覆盖它。

如果我这样做:

$a .= "World!";

$a已经存在,它会把事情搞砸吗?我不想每次都必须执行以下操作:

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

}

试试看?

unset($a);
$a .= 'World!'; // Notice: Undefined variable

$a = 123;
$a.= 'World!';  //$a is now '123World!';

$a = null;
$a .= 'World!';  //$a is 'World!';

A ternary 是一个有用的运算符。 (如评论所示)

$a = (isset($a)) ? $a .= 'World!' : $a = 'World!'; // Will avoid a notice.

可以,但它会发出警告。 $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 步将发出 "undefined variable" 警告。

如果 $a 不是这样设置的,你可以初始化它

isset($a) || $a = '';
$a .= "World!";

或者像这样

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