我可以使用 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!';
使用串联赋值运算符 (.=
) 初始化 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!';