我可以用concat赋值运算符初始化PHP变量吗?
使用串联赋值运算符初始化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
$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不能穿越时间,但显然。