Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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;   
}
like image 565
Musa Muaz Avatar asked Aug 19 '16 13:08

Musa Muaz


3 Answers

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 : '';
like image 56
Steve Avatar answered Nov 16 '22 11:11

Steve


you should use this way

if  (!isset( $size ) || !isset( $color ))  {
like image 39
ScaisEdge Avatar answered Nov 16 '22 12:11

ScaisEdge


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)) {
like image 1
KmasterYC Avatar answered Nov 16 '22 12:11

KmasterYC