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

2019-01-12 10:01发布

问题:

When coding with isset i am getting an fatal error.I have searched stackoverflow but results are not satisfactory.

I am getting

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

My codes are

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

回答1:

As mentioned in the comments (and the error message), you cannot pass the result of an expression to isset.

You can use multiple isset calls, or reverse the logic of your if/else block and pass multiple parameters to isset, which i think is the cleanest solution:

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

You can clean this up a little further by setting the default value first, thus avoiding the need for an else section:

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

You could even use a ternary, though some people find them harder to read:

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


回答2:

you shuold use this way

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


回答3:

Your expression always return either true or false => In theory isset always return true so PHP not allow this
Change

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

To

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