致命错误:不能对表达式的结果使用isset()


Fatal error: Cannot use isset() on the result of an expression

isset编码时,我得到一个致命的错误。我已经搜索了stackoverflow,但结果并不令人满意。

I am getting

致命错误:不能对表达式的结果使用isset()(可以使用"null !== expression"代替)

我的代码是

if (!isset( $size || $color )) {
    $style = '';    
}else{
    $style = 'font-size : ' . $size . ';color:' . $color;   
}

正如在注释(和错误消息)中提到的,您不能将表达式的结果传递给isset

你可以使用多个isset调用,或者反转你的if/else块的逻辑并传递多个参数给isset,我认为这是最干净的解决方案:

//true if both are set
if(isset($size, $color)) {
    $style = 'font-size : ' . $size . ';color:' . $color;
}else{
    $style = '';
}

您可以通过先设置默认值来进一步清理它,从而避免需要else部分:

$style = '';
if(isset($size, $color)) {
    $style = 'font-size : ' . $size . ';color:' . $color;
}

你甚至可以使用三元制,尽管有些人觉得它们更难读:

$style = isset($size, $color) ? 'font-size : ' . $size . ';color:' . $color : '';

你应该这样做

if  (!isset( $size ) || !isset( $color ))  {

你的表达式总是返回true或false =>理论上isset总是返回true所以PHP不允许

if (!isset( $size || $color )) {

if (!isset($size) || !isset($color)) {