PHP ---- var_dump(),echo,print_r()的区别

来源:互联网 发布:淘宝网信鸽鸽具用品 编辑:程序博客网 时间:2024/05/22 14:46

在php开发时,我们经常要调试代码,而最常用的方法就是通过输出变量的值,来判断程序是否运行正确。在php中,最常用的三个输出语句便是var_dump(),echo,print_r()。这三个语句都可用来输出,然而它们之间的作用还是有区别的。


var_dump()

var_dump(expression)函数的输出结果<变量类型,变量值,变量长度>,参数expression表示各种变量类型,作用是输出一个变量的详细信息。

$student = array(            'name'=>'frank',             'age'=>'12',             'height'=>'170',             'weight'=>'54'        );        var_dump($student);

例如:这里定义了一个数组变量,然后用var_dump把它输出,可以看到输出的数据为

array (size=4)  'name' => string 'frank' (length=5)  'age' => string '12' (length=2)  'height' => string '170' (length=3)  'weight' => string '54' (length=2)

从这里看出来var_dump输出的变量,有变量的类型,变量的值,以及变量的长度。另外var_dump()还有一个与echo不同的地方是var_dump可以输出对象,echo 输出对象时会报错。
例子:
定义一个Courese类,定义公有属性 name,time, teacher

class Course {    public $name; //课程名称    public $time; //课程时长    public $teacher; //授课老师} 

先new一个对象,然后给这个对象赋值,并输出这个对象。

 $course = new Course();        $course->name = '计算机网络';        $course->teacher = '李老师';        $course->time = '2小时';        var_dump($course);

可以看到输出的数据为:

object(backend\models\Course)[87]  public 'name' => string '计算机网络' (length=15)  public 'time' => string '2小时' (length=7)  public 'teacher' => string '李老师' (length=9)

如果我们用echo来输出这个对象,页面会提示如下信息:
这里写图片描述
这是因为echo输出时会将数据转化为string类型输出,显然这里对象不能转化string输出,所以就报错了。


print_r()

print_r(expression)的作用是输出一个数组,实际上参数expression的类型可为数值变量和引用变量。
同样我们还是引用上面的类,然后new一个对象,接着用print_r去输出它,结果为:

backend\models\Course Object ( [name] => 计算机网络 [time] => 2小时 [teacher] => 李老师 )

从这里可以看出print_r将其作为数组输出,但是和var_dump不同的一点是print_r只能输出属性的值,而var_dump显示的信息更多。


echo

echo 用于输出数值变量或者是字符串。但使用echo来输出引用变量时,如数组,仅输出数组的名字;当输出一个对象时,服务器提示之类的错误。
同样的我们定义一个变量

 $grades = 100; echo $grades;

打印出来的内容就只有100。

小结:一般我们在调试时,通常会选择用var_dump来输出变量的值,因为显示的信息更全。我们通常用echo来做传值使用,比如说将后台的传过来的值接收在前台显示。print_r()通常用来作为数组输出使用。

阅读全文
0 0
原创粉丝点击