void var_dump ( mixed $expression [, mixed $... ] )
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。在PHP5里,所有的public、private和protected属性都会被返回输出。

-------------------------------------------------------------
mixed var_export ( mixed $expression [, bool $return ] )
输出或返回一个变量的字符串表示。此函数返回关于传递给改函数的变量的结构信息,它和var_dump()类似,不同的是其返回的表示是合法的PHP代码。
当第二个参数设置位TRUE,可以将返回的变量表示复制给一个变量。
var_export在处理一些递归的结构时会报错,但var_dump不会,因为它可以避免递归的引用。比如:var_export($GLOBALS);会报错,var_dump($GLOBALS);则可以运行。

-------------------------------------------------------------
bool print_r ( mixed $expression [, bool $return ] )
显示关于变量的易于理解的信息。如果给出的事string、integer或float,将打印变量值本身。如果给出的事array,将会按照一定的格式显示键和元素。object与数组类似。记住,print_r()将把数组的指针移到最后边,使用reset()可让指针回到开始处。第二个参数设置为TRUE则可以返回为字符串,可以赋值给变量。

下面对比下三者对数组的输出

$array = array(1, 2, array('a', 'b', 'c'));
var_export($array);
/* 输出:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
*/ print_r($array);
/* 输出:
Array
(
[0] => 1
[1] => 2
[2] => Array
(
[0] => a
[1] => b
[2] => c
) )
*/ var_dump($array);
/* 输出:
array (size=3)
0 => int 1
1 => int 2
2 =>
array (size=3)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
*/

下面对比下三者对变量的输出

$var = 'string';
var_dump($var);
/* 输出:
string 'string' (length=6)
*/ var_export($var);
/* 输出:
'string'
*/ print_r($var);
/* 输出:
string
*/

-------------------------------------------------------------
下面对比下三者对资源的输出

$handle = fopen('log.txt', 'r');
var_dump($handle);
/* 输出:
resource(3, stream)
*/ var_export($handle);
/* 输出:
NULL
*/ print_r($handle);
/* 输出:
Resource id #3
*/

-------------------------------------------------------------
下面对比下三者对布尔变量的输出

$a = TRUE;
var_dump($a);
/* 输出:
boolean true
*/ var_export($a);
/* 输出:
true
*/ print_r($a);
/* 输出:
1
*/

-------------------------------------------------------------
下面对比下三者对对象的输出

$obj = new obj();
var_dump($obj);
/* 输出:
object(b)[1]
private 'data' => null
*/ var_export($obj);
/* 输出:
obj::__set_state(array( 'data' => NULL, ))
*/ print_r($obj);
/* 输出:
obj Object ( [data:obj:private] => )
*/

php中var_dump、var_export和print_r的用法区别的更多相关文章

  1. 在c#中 RemoveAt、 Remove、delete用法区别

    有三种方法可以删除 DataTable 中的 DataRow: Delete 方法和 Remove 方法和 RemoveAt 方法 其区别是: Delete 方法实际上不是从 DataTable 中删 ...

  2. js中关键字 const , let , var 的用法区别

    1.const定义的变量不可以修改,而且必须初始化. 2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错. 3.let是块级作用域,函数内部使用let定义后,对函数外部无影响 ...

  3. php中print_r、var_dump和var_export几个函数的用法区别

    php中print_r.var_dump和var_export几个函数的用法区别

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

    1.output basic type 代码 $n = "test"; var_export($n); print_r($n); var_dump($n); echo '----- ...

  5. php中echo(),print(),print_r()之间的区别

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)  print只能打印出简单类型变量的值(如int,string)  print_r可以打印出复 ...

  6. PHP中echo(),print(),print_r()之间的区别?

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string) print_r可以打印出复杂类 ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. angularjs中provider,factory,service的区别和用法

    angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...

  9. C++中public、protected及private用法

    转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容 ...

随机推荐

  1. EXTI—外部中断/事件控制器

    外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线.每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测. EXTI 可以实现对每个中断/事件线进行单独 ...

  2. na+mb与gcd

    蒜头君和花椰妹在玩一个游戏,他们在地上将 nn 颗石子排成一排,编号为 11 到 nn.开始时,蒜头君随机取出了 22 颗石子扔掉,假设蒜头君取出的 22 颗石子的编号为 aa, bb.游戏规则如下, ...

  3. 广义线性模型 - Andrew Ng机器学习公开课笔记1.6

    在分类问题中我们如果: 他们都是广义线性模型中的一个样例,在理解广义线性模型之前须要先理解指数分布族. 指数分布族(The Exponential Family) 假设一个分布能够用例如以下公式表达, ...

  4. osgi实战学习之路:6. Service-1

    什么是Service? 它是注冊到osgi的一个java对象 Service注冊: 通过BundleContext::registerService(java.lang.String[] clazze ...

  5. HTML5中的拖放

    关于HTML5中的拖放 拖放(Drag 和 Drop)是一种常见的特性,即抓取对象以后拖到另一个位置,在 HTML5 中,拖放是标准的组成部分.在HTML5中用户可以使用鼠标选择一个可拖动元素,将元素 ...

  6. 绑定内网和安全redis和mongo以及MQ

    redis允许局域网访问其实很简单.网上一堆都不怎么靠谱. 特此记录一下. 可参考此篇 假设A B 两台机器 在B(ip:192.168.1.99)机器上修改redis配置文件 bind 192.16 ...

  7. 在后台运行Python脚本服务

    在服务器,程序都是后台运行的,当写的python脚本时,需要:   你要是想python robot.py & 是不行的,一旦用户登出,脚本就自动退出了.用at, cron也可以实现不过我发现 ...

  8. 数论 - SGU 107 987654321 problem

    987654321 problem Problem's Link Mean: 略 analyse: 这道题目是道简单题. 不过的确要好好想一下: 通过简单的搜索可以知道,在N<9时答案一定为0, ...

  9. 模板题 + KMP + 求最小循环节 --- HDU 3746 Cyclic Nacklace

    Cyclic Nacklace Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3746 Mean: 给你一个字符串,让你在后面加尽 ...

  10. JavaScript的arguements

    ---恢复内容开始--- arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 messa ...