J'ai une variable booléenne que je veux convertir en chaîne:
$res = true;
J'ai besoin que la valeur convertie soit au format:, "true" "false"
pas"0" "1"
$converted_res = "true";
$converted_res = "false";
J'ai essayé:
$converted_res = string($res);
$converted_res = String($res);
Mais il me dit que string
et String
ne sont pas des fonctions reconnues.
Comment convertir ce booléen en une chaîne au format "true"
ou "false"
en PHP?
Réponses:
Solution la plus simple:
$converted_res = $res ? 'true' : 'false';
la source
?:
notation est le code le plus simplifié que nous puissions trouver dans cette situation.echo '<active>' . $res ? 'true' : 'false' . '</active>';
ne produit pas le résultat souhaité, leecho '<active>' . ($res ? 'true' : 'false') . '</active>';
fait.La fonction var_export renvoie une représentation sous forme de chaîne d'une variable, vous pouvez donc faire ceci:
Le deuxième argument indique à la fonction de renvoyer la chaîne au lieu de l'écho.
la source
Une autre façon de faire:
json_encode( booleanValue )
la source
var_export()
est plus conforme à l'intention de l'opération (à moins que l'on ait besoin de la chaîne pour certains JSON, c'est ;-)Voir var_export
la source
edit
inclure les informations pertinentes du lien dans votre message. Bien que les informations soient utiles, elles sont plutôt laissées en tant que «commentaire» au PO. Toutes les informations nécessaires du lien doivent être intégrées dans la réponse. 1) Si le lien devenait inaccessible, ce message deviendrait inutile. 2) les visiteurs ne devraient pas être tenus de visiter des liens externes, seulement pour le découvrir eux-mêmes. Cela dit, les liens vers la documentation, les sources ou des informations supplémentaires sont fortement encouragés. Merci pour votre contribution.Vous utilisez strval () ou (chaîne) pour convertir en chaîne en PHP. Cependant, cela ne convertit pas booléen en l'orthographe réelle de "vrai" ou "faux", vous devez donc le faire vous-même. Voici un exemple de fonction:
la source
$val = true;
alorsstrval($val)
et les(string) $val
deux retournent 1.Les autres solutions ici ont toutes des mises en garde (bien qu'elles répondent à la question en cours). Si vous (1) bouclez sur des types mixtes ou (2) voulez une solution générique que vous pouvez exporter en tant que fonction ou inclure dans vos utilitaires, aucune des autres solutions ici ne fonctionnera.
La solution la plus simple et la plus explicite est:
Mais la plupart des développeurs qui lisent votre code auront besoin d'un voyage sur http://php.net/var_export pour comprendre ce que cela
var_export
fait et quel est le deuxième paramètre.1.
var_export
Fonctionne pour l'
boolean
entrée mais convertit tout le reste en unstring
aussi.2.
($res) ? 'true' : 'false';
Fonctionne pour les entrées booléennes mais convertit tout le reste (entiers, chaînes) en vrai / faux.
3.
json_encode()
Mêmes problèmes
var_export
et probablement pire carjson_encode
ne peut pas savoir si la chaînetrue
était destinée à une chaîne ou à un booléen.la source
var_export()
semble être le meilleur pour le cas d'utilisation spécifique, merci.var_export(boolval($var), true)
est un moyen sûr de transformer la valeur en chaînes "true" ou "false".if (is_bool($res) { $res = $res ? 'true' : 'false'; }
<< cela ne fonctionnera pas - il est)
peut-être préférable de ne pas l'utiliser$result = (is_bool($var) && $var) ? 'true' : 'false';
$value = is_bool($value) ? var_export($value, true) : $value;
cette façon, je vis la valeur intacte et ne change que les booléens en leur représentation sous forme de chaîne.$res = $res
?? Vouliez-vous dire$res == $res
:? Ou même$res === $res
:?Pourquoi ne fais-tu pas comme ça?:
la source
Pour moi, je voulais une représentation de chaîne à moins qu'elle ne le soit
null
, auquel cas je voulais qu'elle restenull
.Le problème avec var_export est qu'il convertit
null
en une chaîne"NULL"
et il convertit également une chaîne vide en"''"
, ce qui n'est pas souhaitable. Il n'y avait pas de solution facile que je pouvais trouver.C'est le code que j'ai finalement utilisé:
Court et simple et facile à ajouter dans une fonction aussi si vous préférez.
la source
boolval()
fonctionne pour les tables compliquées où la déclaration de variables et l'ajout de boucles et de filtres ne fonctionnent pas. Exemple:où
$tmp
est une clé utilisée pour transposer d'autres données. Ici, je voulais que le tableau affiche "Oui" pour 1 et rien pour 0, donc utilisé(boolval($row['special_case']) ? 'Yes' : '')
.la source
boolval(some_expression) ? .. : ..
se comporte-t-il différemment desome_expression ? .. : ..
?Cela fonctionne également pour tout type de valeur:
code:
la source
Modifié sur la base de la suggestion de @ sebastian-norr soulignant que la
$bool
variable peut ou non être un vrai0
ou1
. Par exemple,2
résouttrue
lors de son exécution via un test booléen en PHP.Comme solution, j'ai utilisé la conversion
$bool
de type pour garantir que nous convertissons en0
ou1
.Mais je dois admettre que l'expression simple
$bool ? 'true' : 'false'
est beaucoup plus propre.Ma solution utilisée ci-dessous ne doit jamais être utilisée, LOL.
Voici pourquoi pas ...
Pour éviter la répétition, le tableau contenant la représentation sous forme de chaîne du booléen peut être stocké dans une constante qui peut être mise à disposition dans toute l'application.
la source
Je ne suis pas fan de la réponse acceptée car elle convertit tout ce qui est faux en
"false"
non seulement booléen et vice-versa.Quoi qu'il en soit, voici ma réponse OTT, il utilise la
var_export
fonction.var_export
fonctionne avec tous les types de variables saufresource
, j'ai créé une fonction qui effectuera une conversion régulière en chaîne ((string)
), une conversion stricte (var_export
) et une vérification de type, en fonction des arguments fournis ..la source
la source
isset
pas nécessaire ici. En php,if
-test est faux pour les deuxnull
etvariable not defined
. Peut simplement faire$converted_res = ( $res ? 'true' : 'false' );
comme vu dans les réponses plus anciennes.la source
Je voulais juste mettre à jour, en PHP> = 5,50, vous pouvez
boolval()
faire la même choseRéférence ici .
la source
(bool) $var;
"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
boolval()
va dans l'autre sens, convertissant une variable de n'importe quel type en bool, pas bool en chaîne.