当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-05 10:20:21 浏览: 评论:0 

这篇文章主要介绍了PHP 中 var_export、print_r、var_dump 调试中的区别,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下。

1、output basic type

代码

  1. $n = "test"
  2. var_export($n); 
  3. print_r($n); 
  4. var_dump($n); 
  5. echo '-----------------' . '<br/><br/>'
  6. file_put_contents("index.log", var_export($n, true) . PHP_EOL, FILE_APPEND); 
  7. file_put_contents("index.log", print_r($n, true) . PHP_EOL, FILE_APPEND); 
  8. file_put_contents("index.log", var_dump($n) . PHP_EOL, FILE_APPEND); 

结果

(1)前端:

  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

代码

  1. $arr = array
  2.   "a" => 1, 
  3.   "b" => "222"
  4.   "c" => 3, 
  5. ); 
  6. var_export($arr); 
  7. print_r($arr); 
  8. var_dump($arr); 
  9. echo '-----------------' . '<br/><br/>'
  10. file_put_contents("index.log", var_export($arr, true) . PHP_EOL, FILE_APPEND); 
  11. file_put_contents("index.log", print_r($arr, true) . PHP_EOL, FILE_APPEND); 
  12. file_put_contents("index.log", var_dump($arr) . PHP_EOL, FILE_APPEND); 

结果

(1)前端:

  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

代码

  1. class foo 
  2.   public $n
  3.   public function do_foo() 
  4.   { 
  5.     echo "Doing foo." . $this->n; 
  6.   } 
  7. $object = new foo; 
  8. var_export($object); 
  9. print_r($object); 
  10. var_dump($object); 
  11. echo '-----------------' . '<br/><br/>'
  12. file_put_contents("index.log", var_export($object, true) . PHP_EOL, FILE_APPEND); 
  13. file_put_contents("index.log", print_r($object, true) . PHP_EOL, FILE_APPEND); 
  14. file_put_contents("index.log", var_dump($object) . PHP_EOL, FILE_APPEND); 

结果

(1)前端:

  1. foo::__set_state(array'n' => NULL, )) 
  2. foo Object ( [n] => ) 
  3. /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 转为返回输出值,而不是直接输出到前端影响线上。

Tags: var_export print_r var_dump

分享到: