PHP 中 var_export、print_r、var_dump 调试中的区别
1、outputbasictype
代码
$n="test"; var_export($n); print_r($n); var_dump($n); echo'-----------------'.'
'; file_put_contents("index.log",var_export($n,true).PHP_EOL,FILE_APPEND); file_put_contents("index.log",print_r($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、outputarray
代码
$arr=array( "a"=>1, "b"=>"222", "c"=>3, ); var_export($arr); print_r($arr); var_dump($arr); echo'-----------------'.'
'; file_put_contents("index.log",var_export($arr,true).PHP_EOL,FILE_APPEND); file_put_contents("index.log",print_r($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'=>int1 'b'=>string'222'(length=3) 'c'=>int3 ----------------- /Users/xjnotxj/Program/PhpstormProject/colin/index.php:19: array(size=3) 'a'=>int1 'b'=>string'222'(length=3) 'c'=>int3
(2)index.log:
array('a'=>1,'b'=>'222','c'=>3,)Array([a]=>1[b]=>222[c]=>3)
3、outputobject
代码
classfoo { public$n; publicfunctiondo_foo() { echo"Doingfoo.".$this->n; } } $object=newfoo; var_export($object); print_r($object); var_dump($object); echo'-----------------'.'
'; file_put_contents("index.log",var_export($object,true).PHP_EOL,FILE_APPEND); file_put_contents("index.log",print_r($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,))
fooObject([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,))fooObject([n]=>)
总结:
1、输出结果的详细性:var_export≈print_r 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调试中的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!