PHP-ブール値を取得してfalseのときにfalseをエコー


172

次のコードは何も出力しません。

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

しかし、次のコードは出力します1

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

印刷するより良い方法がある0falseとき$bool_valfalse追加するよりもifステートメントは?


5
これがデバッグ用である場合は、echoの代わりにvar_dumpを試してください。
Mark E. Haase、2011

1
(bool)キャストは冗長である、あなたはブール値にキャストブール値にする必要はありません:(bool) true === true
Jon Surrell 2015年

echo 0==1;出力するようにPHPを設定する方法はあり ます0false
マリオ2016年

回答:


250
echo $bool_val ? 'true' : 'false';

または、falseの場合にのみ出力が必要な場合:

echo !$bool_val ? 'false' : '';

85
それは混乱を招き、無秩序で無力であり、明らかな利点はありません。私は20年以上プログラミングをしていて、空白に自動変換するために 'false'を欲したこと一度もありません。私のJava / Spring / Hibernate開発は、適度なPHPシステムよりもはるかにクリーンで強力です。私は..混乱した人をたくさん見つけることができる stackoverflow.com/questions/9042002/... が、私は本当のように任意の参照を見つけることができなかった理由は、このデザインの「機能」のために。
トーマスW

3
PHPのドキュメントのこのビットに基づいて、(string)FALSE == ""が良い考えである理由を本当に主張したいと思います: "ブールTRUE値は文字列" 1 "に変換されます。ブールFALSEは" "(空の文字列)。これにより、ブール値と文字列値の間で相互に変換できます。しかし、私はそれをテストしました、そして(bool) "0"もFALSEと評価されるので...わからない。私はPHPが大好きですが、それはちょっと変だと否定することはできません> _>
Ben

7
変じゃないよFALSE == ''。それは完全に有効であり、JavaScriptを含む他の言語の一部です。奇妙なのはFALSEがデフォルトで空の文字列になることです。デフォルトは0です。常に。特にTRUEは常にデフォルトで1になるため、これはプログラミングの基本的なルールに違反します。コードの一貫性を保ちます。これは明らかにバグです。
Literphor 2014年

1
これはこれを行う最も簡単な方法ですが、ブール値を含むprint_rを介して配列を実行しますが、以前にそれらを交換するループを介して配列を実行しない限り、これらの値は空白で表示されます。 、値が実際に真であるか偽であるか、または空白に見える何かを確認することは、首の大きな痛みになります。
Dave Heq、2016年

2
@Ben はPHPでは!! '0'評価さfalseれますが、trueJS で評価されます。!! ""JSとPHPではfalseです。
チャーリー

64

これが最も簡単な方法です。

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

または

var_export($bool_value)

2番目の引数がtrueでない場合、結果を直接出力します。


34

いいえ、他のオプションはZendエンジンを変更することであり、それを「より良い方法」と呼ぶのは難しいでしょう。

編集:

もし本当にしたいなら、あなたは配列を使うことができます:

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

3
配列キーをブール型にすることはできないため、これは奇妙な方法です。PHPはそれをarray(0 => 'false'、1 => 'true')にキャストします。
Mark E. Haase、2011

66
@mehaase:私はずっと前に、PHPの型処理にあらゆる種類のロジックを適用することをやめました。私はそれが来るのでただそれをとります。
Ignacio Vazquez-Abrams

32

これは、ブール値を1/0ではなく、そのまま出力します。

    $bool = false;

    echo json_encode($bool);   //false

1
特に、JSONでブール値を正確に必要とする場合は、すばらしい答えです。
バート、

1
これが最良の答えです
Shady Sherif



15

var_export 必要な機能を提供します。

これは、やに対して何も出力せず、常に値を出力します。渡された引数のPHP表現を出力します。出力はPHPにコピー/貼り付けできます。nullfalsevar_export

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'

文字列"true"またはを出力したい場合は"false"、次のようにブール値にキャストできますが、特殊性に注意してください。

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


4
echo(var_export($var)); 

とき$varブール変数であり、trueあるいはfalseプリントアウトされます。


私の意見では、JavaScriptでPHP変数をエクスポートするときの最良のソリューションです!
RPDeshaies 2014

3
これは少し誤解を招くものです。var_exportこの場合、結果をエコーし​​てnullを返すため、var_exportはを出力しtrue || false、()をechoエコーします。から出力を返すには、2番目のパラメータをとして指定する必要があります。null''var_exporttrue
Jon Surrell、2014

PHP変数をJavaScriptにエクスポートする場合は、@ RPDeshaies json_encodeがより良いオプションです。
andho


3

sprintf()%bオプションはブール値を整数に変換します:

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

あなたはそれに慣れていない場合:最初の1のような置換文字列で味付けあなたのouputを文字列でなければならない間は、この関数にパラメータの任意の量を与えることができ%bたり%s、一般的な文字列置換のために。

各パターンは順番に引数で置き換えられます:

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");

2

json_encodeは標準でそれを実行しますが、(インデントなど)きれいではありません。

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

...与える...

{"whatever":true,"somethingelse":false}

0
function dump_condition($condition){
    if($condition){
        return "true";
    } else {
        return "false";
    }
 }

スクリプトで使用

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

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

0

あなたはブールをブールにキャストし、整数が表示されることを期待しています。それは機能しますtrueが、偽ではありません。あなたは整数を期待するので:

echo (int)$bool_val;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.