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代码可以直接使用。

<think>好的,我现在需要回答用户的问题:在PHP中如何打印变量。首先,我得回想一下PHP输出变量的常用方法,然后整理出一个清晰的步骤,确保用户能理解并正确应用这些方法。 首先,PHP中常用的输出函数有几个,比如echo、printprint_r、var_dumpvar_export。每个函数的功能和适用场景不同,我需要分别解释它们的用法和区别。 用户可能对基础输出函数比较关注,比如echo和print。这两个都是语言结构,不是真正的函数,所以使用时可以不加括号。echo可以输出多个参数,而print只能输出一个,并且返回1,可能在表达式中使用。不过对于大多数情况,用户可能更常用echo,因为它的简洁性。 接下来是打印数组或对象的情况。这时候print_r和var_dump就派上用场了。print_r会以更易读的形式显示数组或对象,而var_dump则会输出变量的类型和值,结构更详细,适合调试。var_export输出可解析的PHP代码形式,可能用于生成代码或保存变量内容。 然后,我需要考虑用户可能需要具体的例子来理解每个函数的用法。例如,使用echo输出字符串变量,用print_r处理数组,用var_dump检查变量的详细信息。同时,要提醒用户注意输出环境,比如在Web应用中输出到HTML时需要考虑标签的格式,可能需要使用<pre>标签来保持格式。 另外,需要提到这些函数在错误调试中的应用场景。比如,var_dump在开发过程中非常有用,因为它显示数据类型和结构,而print_r更适合快速查看数组内容。同时,用户可能不知道这些函数的返回值,比如var_export可以将输出保存到变量中,而不仅仅是直接输出。 还要注意安全性,比如在输出用户输入时,要防止XSS攻击,使用htmlspecialchars函数进行转义。这在Web开发中是一个重要点,应该包含在回答中。 最后,总结各个函数的区别和适用场景,帮助用户根据需求选择合适的方法。结构上,先分点介绍每个函数,再给出示例,最后比较总结,这样用户能逐步理解和应用。</think>在 PHP打印变量是调试和输出内容的基础操作,以下是常用的方法及详细说明: --- ### 一、基础输出函数 #### 1. `echo` 语句 - **用途**:直接输出一个或多个变量或字符串。 - **语法**: ```php echo $variable; echo "文本" . $variable; // 连接字符串 ``` - **示例**: ```php $name = "张三"; echo $name; // 输出:张三 echo "姓名:" . $name; // 输出:姓名:张三 ``` #### 2. `print` 语句 - **用途**:与 `echo` 类似,但只能输出单个值,返回 `1`。 - **语法**: ```php print $variable; ``` - **示例**: ```php $age = 25; print $age; // 输出:25 ``` --- ### 二、调试专用函数 #### 1. `print_r()` - **用途**:以易读格式输出数组或对象。 - **语法**: ```php print_r($variable); ``` - **示例**: ```php $array = ["苹果", "香蕉", "橘子"]; print_r($array); ``` **输出**: ``` Array ( [0] => 苹果 [1] => 香蕉 [2] => 橘子 ) ``` #### 2. `var_dump()` - **用途**:输出变量的 **类型、值和结构**,适合调试。 - **语法**: ```php var_dump($variable); ``` - **示例**: ```php $number = 42; var_dump($number); ``` **输出**: ``` int(42) ``` #### 3. `var_export()` - **用途**:输出变量的可解析字符串表示(类似 PHP 代码)。 - **语法**: ```php var_export($variable, true); // 第二个参数设为 true 可返回字符串而不直接输出 ``` - **示例**: ```php $data = ["a" => 1, "b" => 2]; echo var_export($data); ``` **输出**: ``` array ( 'a' => 1, 'b' => 2, ) ``` --- ### 三、注意事项 1. **输出到 HTML 页面**: - 若在网页中输出复杂结构(如数组),建议用 `<pre>` 标签包裹结果: ```php echo "<pre>"; print_r($array); echo "</pre>"; ``` 这会保留缩进和换行,提升可读性。 2. **安全性**: - 输出用户输入内容时,需防止 XSS 攻击: ```php echo htmlspecialchars($user_input); ``` 3. **性能差异**: - `echo` 比 `print` 更快(因无返回值),优先用于简单输出。 --- ### 四、方法对比 | 方法 | 输出类型支持 | 返回值 | 适用场景 | |---------------|-------------------|----------|-----------------------| | `echo` | 字符串、变量 | 无 | 快速输出内容 | | `print` | 单个字符串或变量 | `1` | 简单输出 | | `print_r()` | 数组、对象 | `true` | 查看数组/对象结构 | | `var_dump()` | 任意变量 | 无 | 调试(显示类型和值) | | `var_export()`| 任意变量 | 字符串 | 生成可存储的变量表示 | --- ### 五、实际应用场景 1. **快速输出内容** → 用 `echo` 2. **检查数组结构** → 用 `print_r()` 3. **调试变量类型和值** → 用 `var_dump()` 4. **生成配置文件** → 用 `var_export()`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值