[PHP] 真偽値(true/false)をprintすると「1/空文字列」になる [文字列]

この記事は約3分で読めます。
スポンサーリンク

当サイトには広告が含まれています。

(2025年8月)

真偽値(true/false)を print すると、「1」が表示される。

$foo = true ;
print $foo ;// 1

当然、以下でも同じ。

print(true) ; // 1

逆(false)の場合は、何も表示されない。

print(false) ; // (何も表示されない)

これは、論理型(boolean)を文字列に変換すると、trueは「1」に、falseは「空文字列」に変換されるためである。

Gooleの検索結果の「AIによる概要」では、「PHPでtrueをprintで出力すると、ブラウザ上では何も表示されません。」とユッテくるが、

AIによる概要(trueをprint)

明らかに嘘(ウヅォ)である。

これは明らかに/晃蟹ハッキリとした分かり易ゐ嘘であるが、ソレナリに精査しないと分からないような嘘が多数ミラレルので、絶対に信用/瀋陽シナゐコト!

printしなくても、文字列結合代入演算子(.=)等で処理した場合も、その時点で文字列のなるため「1」になってしまう。

処理した結果に「謎の1」が出現する場合は、この点を疑ゥとョゐだろう。

なお、strstrは、指定した文字列が文字列内にあるかを調べる用途で使われることが多いが、

$email = “name@example.com” ;
$domain = strstr($email,”@”) ;// 後ろが探す文字列
print $domain ; // @example.com

戻り値は、探す文字列を含み、そこから文字列の終わりまでの「文字列」であり、真偽値(true/false)ではない。

よって、以下の場合、print結果は「1」とはならないので注意か必要だ。

$str = “*” ;
$res = strstr($str,”*”) ;// 真偽値(true/false)ではない!

print $res ;// *

var_dump($res_2) ;// string(1) “*”

参考

・(string):整数(int)へのキャスト
・(int):文字列(string) へのキャスト
・(float):浮動小数点数(float)へのキャスト

strval:変数の文字列としての値を取得する
intval:変数の整数としての値を取得する
floatval:変数のfloat値を取得する

true
・var_dump((string)true) ;// string(1) “1”
・var_dump((int)true) ;// int(1)
・var_dump((float)true) ;// float(1)

・var_dump(strval(true)) ;// string(1) “1”
・var_dump(intval(true)) ;// int(1)
・var_dump(floatval(true)) ;// float(1)

false
・var_dump((string)false) ;// string(0) “”
・var_dump((int)false) ;// int(0)
・var_dump((float)false) ;// float(0)

・var_dump(strval(false)) ;// string(0) “”
・var_dump(intval(false)) ;// int(0)
・var_dump(floatval(false)) ;// float(0)

関連:[PHP] str_replaceと配列 [文字列置換]

関連:[PHP] checkdateが意味不明杉流件 [クヅォ]

タイトルとURLをコピーしました