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

2019-01-12 09:55发布

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;   
}

3条回答
你好瞎i
2楼-- · 2019-01-12 10:34

you shuold use this way

if  (!isset( $size ) || !isset( $color ))  {
查看更多
成全新的幸福
3楼-- · 2019-01-12 10:36

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 : '';
查看更多
劳资没心,怎么记你
4楼-- · 2019-01-12 10:45

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)) {
查看更多
登录 后发表回答