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

我可以用concat赋值运算符初始化PHP变量吗?,php,concatenation,Php,Concatenation,使用串联赋值运算符初始化PHP变量会导致问题吗?我所处的情况是,变量可能已经创建,也可能尚未创建,但如果已经创建,我不想覆盖它 如果我这样做: $a .= "World!"; a美元已经存在,它会把事情搞砸吗?我不想每次都要做以下事情: if(!isset($a)){ $a = "World!"; } else { $a .= "World!"; } 试试看 unset($a); $a .= 'World!'; // Notice: Undefined variable

使用串联赋值运算符初始化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是一个有用的运算符。正如评论所暗示的那样

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

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

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

$a = null;
$a .= 'World!';  //$a is 'World!';
A是一个有用的运算符。正如评论所暗示的那样

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

可以,但它会发出警告$a.='foo'相当于$a=$a'福'。在定义变量之前,您正在访问该变量

   $a = $a . 'foo';
1.       ^---read value from undefined variable 'a'
2.             ^---append string 'foo';
3.  ^---assign value to new variable 'a'

由于PHP不能进行时间旅行,步骤1将发出未定义的变量警告。

您可以,但它会发出警告$a.='foo'相当于$a=$a'福'。在定义变量之前,您正在访问该变量

   $a = $a . 'foo';
1.       ^---read value from undefined variable 'a'
2.             ^---append string 'foo';
3.  ^---assign value to new variable 'a'

由于PHP不能进行时间旅行,步骤1将发出一个未定义的变量警告。

如果没有这样设置,您可以初始化$a

isset($a) || $a = '';
$a .= "World!";
$a = (isset($a) ? $a : '') . 'World!';
还是像这样

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

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

isset($a) || $a = '';
$a .= "World!";
$a = (isset($a) ? $a : '') . 'World!';
还是像这样

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

既然这是一个已知的和预期的警告,我能不能只做@$a.=World!;不,使用@编程相当于把手指塞进耳朵里,让拉拉听不见。这是一个非常糟糕的编程实践。PHP不能进行时间旅行,但显然。因为这是一个已知的和预期的警告,我能做@$a.=World!;不,使用@编程相当于把手指塞进耳朵里,让拉拉听不见。这是一个非常糟糕的编程实践。PHP不能穿越时间,但显然。