PHP製の管理画面とかでtrue
、false
といったBoolean値をそのまま表示させたい時
単純に文字列にキャストしても上手くいかない
<?php (string) true; // => "1" (string) false; // => "" strval( true ); // => "1" strval( false ); // => "" // 空文字を連結してもダメ echo true . ''; // => "1" echo false . ''; // => ""
(string)
, strval
で文字列化しても上手く表示することができません。
var_export 関数を使うと true / false の文字列で表示される
<?php var_export( true ); // => "true" var_export( false ); // => "false"
変数にして使用したい時は、第二引数をtrue
にすればOK
<?php $boolean = true; $val = var_export( $boolean, true ); echo $val; // => "true"
三項演算子やif文を使うパターン
簡単ですが、Boolean値以外でもtrueかfalseでされてしまう問題があるのでそれを許容できるのであればOK。
<?php function print_boolean($val) { echo ($val)? 'true':'false'; } print_boolean( true ); // => "true" print_boolean( false ); // => "false" // Boolean値以外でも true か false で出力される print_boolean( ); // => "false" print_boolean( 0 ); // => "false" print_boolean("false"); // => "true"
Boolean を var_dump、prent_r した時の違い
<?php var_dump( true ); // => bool(true) var_dump( false ); // => bool(false) print_r( true ); // => "1" print_r( false ); // => ""
Bool値を文字列にキャストした際にfalse
が""
になってしまうのは、文字列の"false"
をBoolean値にキャストするとtrue
になる仕様のためなんじゃないかなと思いました。👇
<?php $bool = (bool) "false"; var_dump( $bool ); // => bool(true) $bool = (bool) 0 var_dump( $bool ); // => bool(false)
[参考]
- PHP: 型の相互変換 - Manual
- PHP: print_r - Manual
- PHP: var_dump - Manual
- PHP: var_export - Manual
- floatingdays: PHPでいろいろな型の変数を文字列に変換する5つの関数の比較
- 作者: 谷藤賢一,河原健人
- 出版社/メーカー: リックテレコム
- 発売日: 2011/12/09
- メディア: 大型本
- 購入: 10人 クリック: 129回
- この商品を含むブログ (7件) を見る