1.echo
这是最简单的输出数据调试方法,一般用来输出变量值,或者你不确定程序执行到了哪个分支的情况下使用。
$var = 7;
if (0 > $var) {
// do something
echo '1';
}elseif (0 < $var && 5 > $var) {
// do something
echo '2';
}elseif (5 < $var && 10 > $var) {
// do something
echo '3';
}
执行结果:
3
由此我们清楚的看到代码分支执行到了第三个判断分支。
补充:echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号、双引号都可以。 echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。 另外,如果你想给 echo 传递多个参数, 那么就不能使用小括号。
2.print
用法同echo,它实际上也不是一个函数(是一个语言结构),因此你可以不必使用圆括号来括起它的参数列表。只是echo没有返回值,而print总是返回1。
$var = 4;
if (0 > $var) {
// do something
print '1';
}elseif (0 < $var && 5 > $var) {
// do something
print '2';
}elseif (5 < $var && 10 > $var) {
// do something
print '3';
}
执行结果:
2
3.printf
printf函数常用来调试输出一些其他输出不能正确输出的变量,比如在PHP中,浮点数和整数之间经常会造成迷惑。PHP手册功能解释为:输出格式化字符串。
$float = round(1111.11, 2) * 100;
$int = intval($float);
var_dump($float);
var_dump($int);
执行结果:
float(111111)
int(111110)
这种情况下,要弄清为什么会有这种差异,就要用到 printf了。
$float = round(1111.11, 2) * 100;
$int = intval($float);
printf("%.20f", $float);
echo "\n";
printf("%.20f", $int);
执行结果:
111110.99999999998544808477
111110.00000000000000000000
4.print_r、var_dump、var_export
先看看PHP手册的解释:
print_r——打印关于变量的易于理解的信息
var_dump——打印变量的相关信息
var_export——输出或返回一个变量的字符串表示
这三个函数主要是用来输出变量的数据值,特别是数组和对象数据,一般我们在查看接口返回值,或者某些不太确定变量的时候,都可以使用这三个函数。
代码示例:
$arr = array(
'string' => 'dingdingwork APP',
'bool' => true,
'bool2' => false,
'array' => array('appname'=>'盯盯工作', 'website'=>'http://www.dingdingwork.com', 2015),
'int' => 100,
'float' => 0.01,
'null' => null,
'object' => new stdClass(),
);
print_r($arr);
var_dump($arr);
var_export($arr);
print_r 的执行结果:
var_dump 的执行结果:
print_r 输出的格式很整齐,跟 var_dump 的区别是没有数据类型,并且布尔值的 false 和值 NULL 输出为空。
var_export 的执行结果:
var_export 输出的所有数据是可以作为组织好的变量输出的,可以直接赋值使用,但是对于资源型的变量会输出 NULL,这一点需要注意一下。