PHP 中 var_export、print_r、var_dump 调试中的区别

1、output basic type

代码

n = " t e s t " ; v a r e x p o r t ( n = "test"; var_export( n="test";varexport(n);
print_r( n ) ; v a r d u m p ( n); var_dump( n);vardump(n);
echo ‘-----------------’ . ‘

’;
file_put_contents(“index.log”, var_export( n , t r u e ) . P H P E O L , F I L E A P P E N D ) ; f i l e p u t c o n t e n t s ( " i n d e x . l o g " , p r i n t r ( n, true) . PHP_EOL, FILE_APPEND); file_put_contents("index.log", print_r( n,true).PHPEOL,FILEAPPEND);fileputcontents("index.log",printr(n, true) . PHP_EOL, FILE_APPEND);
file_put_contents(“index.log”, var_dump($n) . PHP_EOL, FILE_APPEND);
结果

(1)前端:

‘test’ test /Users/xjnotxj/Program/PhpstormProject/colin/index.php:9:string ‘test’ (length=4) ----------------- /Users/xjnotxj/Program/PhpstormProject/colin/index.php:15:string ‘test’ (length=4)

(2)index.log:

‘test’ test

2、output array

代码

a r r = a r r a y ( " a " = > 1 , " b " = > " 222 " , " c " = > 3 , ) ; v a r e x p o r t ( arr = array( "a" => 1, "b" => "222", "c" => 3, ); var_export( arr=array("a"=>1,"b"=>"222","c"=>3,);varexport(arr);
print_r( a r r ) ; v a r d u m p ( arr); var_dump( arr);vardump(arr);
echo ‘-----------------’ . ‘

’;
file_put_contents(“index.log”, var_export( a r r , t r u e ) . P H P E O L , F I L E A P P E N D ) ; f i l e p u t c o n t e n t s ( " i n d e x . l o g " , p r i n t r ( arr, true) . PHP_EOL, FILE_APPEND); file_put_contents("index.log", print_r( arr,true).PHPEOL,FILEAPPEND);fileputcontents("index.log",printr(arr, true) . PHP_EOL, FILE_APPEND);
file_put_contents(“index.log”, var_dump($arr) . PHP_EOL, FILE_APPEND);
结果

(1)前端:

array ( ‘a’ => 1, ‘b’ => ‘222’, ‘c’ => 3, ) Array ( [a] => 1 [b] => 222 [c] => 3 ) /Users/xjnotxj/Program/PhpstormProject/colin/index.php:13: array (size=3) ‘a’ => int 1 ‘b’ => string ‘222’ (length=3) ‘c’ => int 3 ----------------- /Users/xjnotxj/Program/PhpstormProject/colin/index.php:19: array (size=3) ‘a’ => int 1 ‘b’ => string ‘222’ (length=3) ‘c’ => int 3

(2)index.log:

array ( ‘a’ => 1, ‘b’ => ‘222’, ‘c’ => 3, ) Array ( [a] => 1 [b] => 222 [c] => 3 )
3、output object

代码

class foo
{
public $n;
public function do_foo()
{
echo “Doing foo.” . $this->n;
}
}
o b j e c t = n e w f o o ; v a r e x p o r t ( object = new foo; var_export( object=newfoo;varexport(object);
print_r( o b j e c t ) ; v a r d u m p ( object); var_dump( object);vardump(object);
echo ‘-----------------’ . ‘

’;
file_put_contents(“index.log”, var_export( o b j e c t , t r u e ) . P H P E O L , F I L E A P P E N D ) ; f i l e p u t c o n t e n t s ( " i n d e x . l o g " , p r i n t r ( object, true) . PHP_EOL, FILE_APPEND); file_put_contents("index.log", print_r( object,true).PHPEOL,FILEAPPEND);fileputcontents("index.log",printr(object, true) . PHP_EOL, FILE_APPEND);
file_put_contents(“index.log”, var_dump($object) . PHP_EOL, FILE_APPEND);
结果

(1)前端:

foo::__set_state(array( ‘n’ => NULL, ))
foo Object ( [n] => )
/Users/xjnotxj/Program/PhpstormProject/colin/index.php:19: object(foo)[1] public ‘n’ => null ----------------- /Users/xjnotxj/Program/PhpstormProject/colin/index.php:25: object(foo)[1] public ‘n’ => null

(2)index.log:

foo::__set_state(array( ‘n’ => NULL, )) foo Object ( [n] => )
总结:

1、输出结果的详细性: var_export ≈ print_r < var_dump

2、调试的时候,调用 var_export、print_r、var_dump 的时候, 不用 在前加 echo 。

3、var_export,print_r 的 第二个参数为true则返回值。var_dump 不支持 ,所以用 file_put_contents 输出调试的时候不要用 var_dump。

4、推荐开发环境的调试直接使用 var_dump,可以获得详细的调试信息和代码行数定位;生产环境的调试使用 var_export 或 print_r,第二个参数记得设置为 true 转为返回输出值,而不是直接输出到前端影响线上。

总结

以上所述是小编给大家介绍的PHP 中 var_export、print_r、var_dump 调试中的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开源独尊的支持!

完整实例:http://github.crmeb.net/u/defu

来自 “开源世界 ” ,链接:https://ym.baisou.ltd/post/676.html,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRMEB定制开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值