2011-01-05 8 views
45

Y at-il une fonction pour basculer/inverser la valeur boolean en PHP?Commutateur de valeur booléenne/inverser

Comme ... un raccourci pour:

if($boolean === true){ 
    $boolean = false; 
}else{ 
    $boolean = true; 
} 
+3

http://www.php.net/manual/fr/language.operators.logical.php – Piskvor

Répondre

103

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 
+1

'$ bool =! $ Bool' deviendra * true * à * false *, mais deviendra-t-il * false * à * vrai *? – jolt

+2

@Tom sûr. Essayez-le –

+0

Ce code est excellent. C'est tellement simple, et je n'y aurais jamais pensé! – 131

-9

bool peut être VRAI ou FAUX.

Utilisez le ce

utilisation

: (Boolean) $ rouge = varbool (false);
echo $ red;

pour vrai, il retournera zéro et un pour faux

function varbool($val){ 

    $val +=(-1); 
    $val *= (-1); 
    return $val; 
} 

Merci ...

+4

Juste une question ... ** pourquoi **? Quel est le problème avec '!'? (Je suis tenté de -0.5 pour réinventer la roue et -0.5 pour le faire très mal) – delnan

+11

Merci pour le rire! – Max

+0

L'élégance est le nom qui suit votre prénom et votre nom de famille si vous avez trois noms. – Ben

0

Une touche de sélection booléenne:

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

3

Qu'en est-il d'utiliser la fonction valeur absolue abs(), $ val peut être "1" ou "0" et que vous voulez inverser:

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

La logique:

soustrayant toujours "1" du nombre et en éliminant le "signe".

1 - 1 = 0 
abs(0) = 0 

0 - 1 = -1 
abs(-1) = 1 
2

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

$boolean ^= 1; 

strictement ce retourne un entier non un booléen. Il 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, il devrait faire l'affaire.

+0

tks @Gannet a fait l'affaire pour moi! –

1

Utilisez simplement ! pour inverser le résultat afin qu'il puisse être comme: $ booléen =! (Bool) $ result;