在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()通常用来作为数组输出使用。