web-dev-qa-db-fra.com

PHP - Amène bool à echo false si false

Le code suivant n'imprime rien:

$bool_val = (bool)false;
echo $bool_val;

Mais le code suivant imprime 1:

$bool_val = (bool)true;
echo $bool_val;

Y a-t-il un meilleur moyen d’imprimer 0 ou false lorsque $bool_val est false que d’ajouter une instruction if?

155
Anonymous1
echo $bool_val ? 'true' : 'false';

Ou si vous voulez seulement une sortie quand c'est faux:

echo !$bool_val ? 'false' : '';
229
Dan Grossman

Voici le moyen le plus simple de procéder:

$text = var_export($bool_value,true);
echo $text;

ou

var_export($bool_value)

Si le deuxième argument n'est pas vrai, le résultat sera directement affiché.

59
Saad

Non, car l'autre option est de modifier le moteur Zend, et il serait difficile d'appeler cela une "meilleure façon".

Edit:

Si vous le voulez vraiment, vous pouvez utiliser un tableau:

$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];
35

Cela affichera la valeur booléenne telle quelle, au lieu de 1/0.

    $bool = false;

    echo json_encode($bool);   //false
25
serdar.sanri

J'aime celui-ci pour l'imprimer

var_dump ($var);
20
akond

Essayez de convertir votre booléen en entier?

 echo (int)$bool_val;
19
Yanick Rochon

var_export fournit les fonctionnalités souhaitées.

Ceci affichera toujours une valeur plutôt que rien d’impression pour null ou false. _var_export_ imprime une représentation PHP de l'argument passé, le résultat pourrait être copié/collé dans PHP.

_var_export(true);    // true
var_export(false);   // false
var_export(1);       // 1
var_export(0);       // 0
var_export(null);    // NULL
var_export('true');  // 'true'   <-- note the quotes
var_export('false'); // 'false'
_

Si vous souhaitez imprimer les chaînes _"true"_ ou _"false"_, vous pouvez convertir en un booléen comme ci-dessous, mais méfiez-vous des particularités:

_var_export((bool) true);   // true
var_export((bool) false);  // false
var_export((bool) 1);      // true
var_export((bool) 0);      // false
var_export((bool) '');     // false
var_export((bool) 'true'); // true
var_export((bool) null);   // false

// !! CAREFUL WITH CASTING !!
var_export((bool) 'false'); // true
var_export((bool) '0');     // false
_
11
Jon Surrell

Cela donne 0 ou 1:

intval($bool_val);

Manuel PHP: Fonction intval

5
David Oliver
echo(var_export($var)); 

Lorsque $var est une variable booléenne, true ou false sera imprimé.

4
mohamedeimo

L'option %b de sprintf () convertira un booléen en entier:

echo sprintf("False will print as %b", false); //False will print as 0
echo sprintf("True will print as %b", true); //True will print as 1

Si vous ne le connaissez pas: Vous pouvez attribuer à cette fonction une quantité arbitraire de paramètres. La première doit être votre chaîne de sortie agrémentée de chaînes de remplacement telles que %b ou %s pour le remplacement général de la chaîne.

Chaque motif sera remplacé par l'argument dans l'ordre:

echo sprintf("<h1>%s</h1><p>%s<br/>%s</p>", "Neat Headline", "First Line in the paragraph", "My last words before this demo is over");
3
nuala

Vous pouvez utiliser un opérateur ternaire

echo false ? 'true' : 'false';
3
Aaron Hathaway

json_encode le fera immédiatement, mais ce n'est pas joli (en retrait, etc.):

echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));

... donne ...

{"whatever":true,"somethingelse":false}
1
Harry Pehkonen
function dump_condition($condition){
    if($condition){
        return "true";
    } else {
        return "false";
    }
 }

utiliser sur le script

echo dump_condition(1>0); // print "true"

echo dump_condition(1<0); // print "false"
0
Oscar Zarrus