タイトルの通りです。
var_dump(print_r(false));
の結果は、bool(true)
になります。
<?php
print_r(true); // 出力結果:1
var_dump(print_r(true)); // 出力結果:1bool(true) print_rの出力(1)とvar_dumpの出力(bool(true))が同時に行われる
print_r(false); // 出力結果:なし
var_dump(print_r(false)); // 出力結果:bool(true)
公式サイトに答えがありました。
return パラメータがTRUEの場合は、この関数はstringを返します。それ以外の場合の返り値はTRUEです。
例えばprint_r($test, TRUE)
のように記述すると、その場で出力せずにprint_rの結果を返り値として渡します。
それをしない場合は、全て返り値はTRUEになるとのことでした。
<?php
$test_true = print_r(true); // 出力結果:1
echo $test_true; // 出力結果:1
var_dump($test_true); // 出力結果:bool(true)
echo gettype($test_true); // 出力結果:boolean
$test_false = print_r(false); // 出力結果:なし
echo $test_false; // 出力結果:1
var_dump($test_false); // 出力結果:bool(true)
echo gettype($test_false); // 出力結果:boolean
// 第二引数にTRUEを指定し、print_rの結果を返り値として受け取る
$test01 = 'test01';
$test02 = print_r($test01, TRUE); // 出力結果:なし
echo $test02; // 出力結果:test01
出力値と返り値を混ぜていただけでした・・・