你是怎么调试PHP代码的


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,这一点需要注意一下。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值