431 votes

Comment convertir une chaîne en php booléen

Comment puis-je convertir string en boolean ?

 $string = 'false';

$test_mode_mail = settype($string,'boolean');

var_dump($test_mode_mail);

if($test_mode_mail) echo 'test mode is on.';
 

il revient,

booléen vrai

mais ce devrait être boolean false .

821voto

Brad Points 61171

Cette méthode a été publiée par @lauthiamkok dans les commentaires. Je le poste ici comme une réponse pour attirer plus d'attention.

Selon vos besoins, vous devriez envisager d'utiliser filter_var() avec l'indicateur FILTER_VALIDATE_BOOLEAN .

 filter_var('true', FILTER_VALIDATE_BOOLEAN); // true
filter_var(1, FILTER_VALIDATE_BOOLEAN); // true
filter_var('1', FILTER_VALIDATE_BOOLEAN); // true
filter_var('on', FILTER_VALIDATE_BOOLEAN); // true
filter_var('yes', FILTER_VALIDATE_BOOLEAN); // true

filter_var('false', FILTER_VALIDATE_BOOLEAN); // false
filter_var(0, FILTER_VALIDATE_BOOLEAN); // false
filter_var('0', FILTER_VALIDATE_BOOLEAN); // false
filter_var('off', FILTER_VALIDATE_BOOLEAN); // false
filter_var('no', FILTER_VALIDATE_BOOLEAN); // false
filter_var('asdfasdf', FILTER_VALIDATE_BOOLEAN); // false
filter_var('', FILTER_VALIDATE_BOOLEAN); // false
filter_var(null, FILTER_VALIDATE_BOOLEAN); // false
 

466voto

GordonM Points 14008

Les chaînes de toujours évaluer à la valeur booléenne true si elles ont une valeur qui est considéré comme "vides" en PHP (prises à partir de la documentation pour empty):

  1. "" (une chaîne vide);
  2. "0" (0 comme une chaîne de caractères)

Si vous avez besoin d'un booléen basé sur le texte de la valeur d'une chaîne de caractères, alors vous aurez besoin de vérifier la présence ou non de cette valeur.

$test_mode_mail = $string === 'true'? true: false;

EDIT: Le code ci-dessus est prévu pour la clarté de la compréhension. Dans la pratique, le code suivant peut être plus approprié:

$test_mode_mail = ($string === 'true');

41voto

wosis Points 850

La Chaîne de caractères "false" est en fait considéré comme un "TRUE" valeur par PHP. La documentation dit:

Pour convertir explicitement une valeur booléenne, utiliser le (bool) ou (boolean) jette. Cependant, dans la plupart des cas, le cast est inutile, car une valeur sera automatiquement converti, si un opérateur, une fonction ou un contrôle la structure a besoin d'un argument booléen.

Voir aussi le Type de Jonglage.

Lors de la conversion en booléen, les valeurs suivantes sont considérées comme FAUSSES:

  • le booléen FALSE lui-même

  • l'entier 0 (zéro)

  • le float 0.0 (zéro)

  • la chaîne vide, et la chaîne "0"

  • un tableau avec des éléments de zéro

  • un objet avec zéro des variables membres (PHP 4 uniquement)

  • le type NULL (y compris les unset les variables)

  • SimpleXML les objets créés à partir des balises vides

Toute autre valeur est considérée comme VRAIE (y compris toutes les ressources).

donc, si vous ne:

$bool = (boolean)"False";

ou

$bool = settype('false','boolean');

dans les deux cas $bool sera TRUE. Donc, avoir avoir à faire t manuellement, comme GordonM suggère.

3voto

DevellMen Points 205
 function stringToBool($string){
    return ( mb_strtoupper( trim( $string)) === mb_strtoupper ("true")) ? TRUE : FALSE;
}
 

ou

 function stringToBool($string) {
    return filter_var($string, FILTER_VALIDATE_BOOLEAN);
}
 

0voto

Nai Points 11

Vous pouvez également utiliser la méthode settype!

SetType ($ var, "Boolean") Echo $ var // voir 0 ou 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X