PHP中print_r,var_dump,var_export函数打印变量

昨天我们看到php中ech,print,printf,sprintf等都可以进行输出字符串,但是如何进行打印输出数组甚至是对象呢。别着急,跟我一起来看看这几个函数。

【1】print_r函数

①作用用于打印变量,以更容易理解的形式展示。打印输出后没有换行。

语法:bool print_r ( mixed $expression [, bool $return ] )

$expression: 要打印的变量。如果给出的是 string、integer 或 float 类型变量,将打印变量值本;
如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。

$return:可选,如果为 true 则不输出结果,而是将结果赋值给一个变量,false 则直接输出结果。

返回值:如果$return设为 true 才有返回值,为一个易于理解的字符串信息。否则直接输出,没有返回值。

如果打印的值是字符串整形或者浮点型的话,这个函数也没什么特别之处。

$str = 'Tacks';
$age = 18;
$weight=88.8;
$isok= true;
$isno= false;
print_r($str);//Tacks
print_r($age);//18
print_r($weight);//88.8
print_r($isok);//1
print_r($isno);//

②可以打印输出数组或者对象

上一篇如果你用printf或者sprint都是打印不出数组的内容的。

对于数组,print_r打印Array后按照键值对进行打印,但实际上仍然不方便进行查看,因为它不换行,也不是按照层级显示,但是还是在浏览器上点击右键查看源码即可按照层级查看(小诀窍呦(ง •_•)ง)。print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处

对于对象,print_r打印类名People然后打印Object然后打印出对象的属性,然是只能打印public protected private的属性,打印不出来方法,而且如果有static修饰的属性,也不会将其打印出来。

$arr =  array('China',array('HeNan'));
print_r($arr);//Array ( [0] => China [1] => Array ( [0] => HeNan ) )
class People{
	public 	  $name = 'Tacks';
	protected $age = 18;
	private   $weight = 88.8;
	static 	  $from = 'China';
	public    function say(){echo 'say';}
	protected function play(){echo 'play';}
	private   function sleep(){echo 'sleep';}
}
print_r(new People());
// People Object ( [name] => Tacks [age:protected] => 18 [weight:People:private] => 88.8 )

③返回值

如果print_r($param,$return)的第二个参数不设置成true的话,也就是默认第二个参数是false,此函数不会有返回值,直接进行输出变量。

反之,如果第二个参数写了,就会将结果赋值给一个变量。

$str = 'Hello world';
$tmp = print_r($str,true);
echo $tmp;//Hello world

 【2】var_dump函数(常用)

作用打印变量的相关信息。(不单单是打印变量,还有变量的值类型长度等)

语法var_dump ( mixed $expression [, mixed $... ] ) : void

返回值:没有返回值。

感觉var_dump函数简直不要太好用了((●ˇ∀ˇ●)),格式清晰,内容完整,非常利用排查错误,检查变量类型,实际上我平时用这个函数是比较多的,也不知道我为啥要整理一些这么些输出函数,大概太闲哈哈哈~( ̄▽ ̄)~*,顺便整理整理。但要注意一下,有个布尔值,利用print_r打印出来是1,而var_dump打印出来是true

$str = 'Tacks';
$age = 18;
$weight=88.8;
$isok= true;
$isno= false;
var_dump($str);//string 'Tacks' (length=5)
var_dump($age);//int 18
var_dump($weight);//float 88.8
var_dump($isok);//boolean true
var_dump($isno);//boolean false

②打印数组或者对象

emm,上一个函数print_r也可以进行打印数组,但实际上格式不太好看,尤其是一些层级关系比较明显的,使用var_dump就很清晰了。

这里我就把浏览器输出的结果截屏出来,真的比print_r清晰。

$arr = array(
array('id'=>1,'name'=>'中国','parent'=>0),
array('id'=>2,'name'=>'北京市','parent'=>1),
array('id'=>3,'name'=>'河南市','parent'=>1),
array('id'=>4,'name'=>'南阳','parent'=>3),
array('id'=>5,'name'=>'海淀区','parent'=>2),
);
class People{
	public 	  $name = 'Tacks';
	protected $age = 18;
	private   $weight = 88.8;
	static 	  $from = 'China';
	public    function say(){echo 'say';}
	protected function play(){echo 'play';}
	private   function sleep(){echo 'sleep';}
}
var_dump($arr);
var_dump(new People());

③参数

上面的哪个print_r只能打印一个变量,而var_dump则可以打印多个,通过逗号隔开,方便快捷。例如上面的输出数组和对象就可以

var_dump($arr,new People());

④使用场景

  1. 常用用于代码调试。

  2. 编写框架时,该函数经常被自定义函数重新修改模仿,当作框架内打印输出的基本原型,例如laravel中的dd()

 【3】var_export函数

①作用 输出或返回一个变量的字符串表示

语法:var_export ( mixed $expression [, bool $return ] ) : mixed

返回值:当使用 默认 或者false 时:return :null(空)

当使用 true 时return :string(字符串)

$arr = array('T','a','c','k','s');
var_export($arr);
$name = 'Tacks';//array ( 0 => 'T', 1 => 'a', 2 => 'c', 3 => 'k', 4 => 's', )
$res = var_export($name, TRUE);
echo $res;//'Tacks'

也是可以打印对象的,把上面的People类实例化打印var_export(new People());其中对于浮点数,var_export会自动进行精确

People::__set_state(array( 'name' => 'Tacks', 'age' => 18, 'weight' => 88.799999999999997, ))

②var_export与var_dump区别

不同于var_dump函数,var_export并不会输出数据的类型以及字符大小等,只会简单把数组的key跟value拼接成一个字符串
不同的是其返回的表示是合法的 PHP 代码。

③使用场景

这个函数平时比较少见,但是它返回的是php代码,可以直接复制使用。

  1. 适用于场合较多用于展示php代码结构,调试代码。

  2. 该函数应为是以php风格输出一段内容,所以无论打印出来的代码是什么样,都是有效的,只要复制粘贴就可以直接使用该段信息。

  3. 将一段内容存储某中存储介质中,如文件,数据库缓存等。

【4】小结

①print_r,var_dump,var_export都可以打印变量,不仅可以字符串,整型,布尔,也可以打印数组,对象。但是打印对象的时候,只会显示public,protected,private属性,经过static修饰过的属性不会打印出来。

②用print_r打印数组的话,点击右键查看页面源代码,会比较清晰一些。如果用var_dump打印数组的可以很清晰显示。

③print_r只打印变量,var_dump打印变量相关信息(内容长度类型)。

④var_export打印变量,会将其转化成字符串输出,返回的是php代码可以直接使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值