PHP中var_dump前添加<br>未产生预期换行的问题求解
问题原因
var_dump()函数本身是直接向浏览器/标准输出流打印内容的,没有返回值,你用字符串拼接的写法存在逻辑错误- 代码实际执行顺序为:先执行
var_dump($apple instanceof Fruit)直接输出bool(true),再执行echo语句输出拼接后的字符串;而var_dump()没有返回值,拼接时会被当作空字符串处理,所以最终输出顺序是先打印bool(true),再打印两个<br>标签,自然看不到bool(true)前面的换行效果。
修复方案
你可以选择任意一种方案修改代码:
方案1:分开输出,不要将var_dump()和字符串拼接
<?php class Fruit { } $apple = new Fruit(); echo "<br>"; var_dump($apple instanceof Fruit); echo "<br>"; ?>
方案2:捕获var_dump()的输出内容再拼接
如果需要将调试内容和其他字符串拼接输出,可以用PHP输出控制函数捕获var_dump的结果:
<?php class Fruit { } $apple = new Fruit(); // 开启缓冲区捕获输出 ob_start(); var_dump($apple instanceof Fruit); // 取出缓冲区内容并清空缓冲区 $dumpResult = ob_get_clean(); echo "<br>" . $dumpResult . "<br>"; ?>
如果不需要var_dump的类型提示格式,也可以用支持返回值的var_export函数:
echo "<br>" . var_export($apple instanceof Fruit, true) . "<br>";
内容的提问来源于stack exchange,提问作者Albert Einstein
相关产品推荐
相关产品推荐

