web-dev-qa-db-fra.com

Valeur booléenne switch/invert

Existe-t-il une fonction permettant de changer/inverser la valeur boolean en PHP?

Comme ... un raccourci pour:

if($boolean === true){
    $boolean = false;
}else{
    $boolean = true;
}
56
jolt

Oui:

$boolean = !$boolean;

si ce n'est pas une valeur booléenne, vous pouvez utiliser la construction ternaire:

$int = ($some_condition ? 1 : 2); // if $some_condition is true, set 1
                                  // otherwise set 2
114
Pekka 웃

Qu'en est-il de l'utilisation de la fonction Valeur absolue abs(), $ val peut être "1" ou "0" et vous souhaitez l'inverser:

$val = abs($val-=1);

La logique:

Toujours soustraire "1" du nombre et éliminer le "signe".

1 - 1 = 0
abs(0) = 0

0 - 1 = -1
abs(-1) = 1
5
Wagner Lipnharski

Si vous voulez le code le plus court possible, XOR le booléen avec 1:

$boolean ^= 1;

Strictement cela retourne un int pas un booléen. Cela ne fonctionne pas de la même manière que $boolean = !$boolean (et est légèrement moins efficace), mais dans la plupart des cas, cela devrait faire l'affaire.

3
Gannet

Utilisez simplement ! pour inverser le résultat afin qu'il ressemble à: $ boolean =! (bool) $ result;

1
Abhinav bhardwaj

Une touche de booléen:

$ détecteur =! $ sélecteur = $ détecteur;

0
lazycommit

vous pouvez le faire en une seule ligne: 

<?php
$val = 0 
$val = $val ==1?0:1;  
?>
0
SAM NZD