web-dev-qa-db-fra.com

Erreur fatale: impossible d'utiliser isset () sur le résultat d'une expression

Lors du codage avec isset, j'obtiens une erreur fatale. J'ai effectué une recherche stackoverflow mais les résultats ne sont pas satisfaisants.

Je reçois 

Erreur fatale: impossible d'utiliser isset () sur le résultat d'une expression (vous pouvez utiliser "null! == expression" à la place)

Mes codes sont

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

Comme indiqué dans les commentaires (et le message d'erreur), vous ne pouvez pas transmettre le résultat d'une expression à isset.

Vous pouvez utiliser plusieurs appels isset ou inverser la logique de votre bloc if/else et transmettre plusieurs paramètres à isset, ce qui me semble être la solution la plus propre:

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

Vous pouvez nettoyer cela un peu plus loin en définissant d'abord la valeur par défaut, évitant ainsi la nécessité d'une section else:

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

Vous pouvez même utiliser un ternaire, bien que certaines personnes le trouvent plus difficile à lire:

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

vous devriez utiliser cette façon 

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

Votre expression retourne toujours true ou false => En théorie, isset renvoie toujours true, donc PHP ne permet pas
Changement

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

À

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