登录
立即注册
首页
>
绿虎论坛
>
历史版块
>
编程
>
PHP
>
讨论/求助
老虎今天解说的例子…感受
我是五好学生
@Ta
2012-07-01
2168点击
echo是个语句吧,一定以;结尾吧,如果引号会使编译出问题,那么编译器制作者,可以判断引号后是否有;而判断,是否是echo结束语句的引号,而可以让我减少犯错的机会,为什么php编译者当时没这么做呢?
隐藏样式
查看源码
回复列表(5|
隐藏机器人聊天
)
1
幻阳化翼
@Ta
/ 2012-07-01 /
样
/
源
呃,PHP是解释脚本语言。而且所有的语句都是以 ; 结尾!是规范源码的可读性!
2
老虎会游泳
@Ta
/ 2012-07-01 /
样
/
源
请问你知道我想通过下面的代码输出什么:
echo '{$c='1',$d='2',$e='3'}';
所以我想说的是,既然你都不知道我的想法,计算机怎么会知道。
3
老虎会游泳
@Ta
/ 2012-07-01 /
样
/
源
php的echo语句允许多个参数,于是可以echo 'a=', $b $c, ';d=', $d;
并且,赋值可以在任何时候进行,这意味着可以
echo $a=3; //输出3,并且把3赋给$a
所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
echo '{$c='1',$d='2',$e='3'}';
它是一句错误的代码。
在发现错误后,它可能被我修改成
echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
输出{$c='1',$d='2',$e='3'}。
但是也有可能是
echo '{$c=\'1',$d='2',$e='3\'}';
输出{$c='123'},同时给$d和$e赋值。
或者也可能是
echo '{$c=\'1\',$d=\'2',$e='3\'}';
输出{$c='1',$d='23'},同时给$e赋值。
或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
4
老虎会游泳
@Ta
/ 2012-07-01 /
样
/
源
php的echo语句允许多个参数,于是可以echo 'a=', $b+$c, ';d=', $d; //讨厌会漏半角加号的UC
并且,赋值可以在任何时候进行,这意味着可以
echo $a=3; //输出3,并且把3赋给$a
所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
echo '{$c='1',$d='2',$e='3'}';
它是一句错误的代码。
在发现错误后,它可能被我修改成
echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
输出{$c='1',$d='2',$e='3'}。
但是也有可能是
echo '{$c=\'1',$d='2',$e='3\'}';
输出{$c='123'},同时给$d和$e赋值。
或者也可能是
echo '{$c=\'1\',$d=\'2',$e='3\'}';
输出{$c='1',$d='23'},同时给$e赋值。
或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
5
老虎会游泳
@Ta
/ 2012-07-01 /
样
/
源
而且,即使可以顺利的“自动修复”错误,但是修复的结果可能是你不想要的。
echo "<a href="$url"></a>";
根据你描述的规则,它会被自动修复成
echo "<a href=\"$url\"></a>";
但事实上,我的
$url='"
http://g.cn
"';
它已经有一对引号了,我需要把它修复成
echo "<a href=".$url."></a>";
但是,程序按照既定的规则自动修复了我的错误,所以程序顺利执行了,但是结果却不是我想要的。如果代码量非常大,我可能完全不清楚到底是什么地方出现的问题,我可能要花大量的时间才能找到错误的所在,甚至有时候发现不了哪里错了。
但是,如果php报告了错误,那么解决问题还不要30秒钟。
添加新回复
回复需要
登录
。
echo '{$c='1',$d='2',$e='3'}';
所以我想说的是,既然你都不知道我的想法,计算机怎么会知道。
并且,赋值可以在任何时候进行,这意味着可以
echo $a=3; //输出3,并且把3赋给$a
所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
echo '{$c='1',$d='2',$e='3'}';
它是一句错误的代码。
在发现错误后,它可能被我修改成
echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
输出{$c='1',$d='2',$e='3'}。
但是也有可能是
echo '{$c=\'1',$d='2',$e='3\'}';
输出{$c='123'},同时给$d和$e赋值。
或者也可能是
echo '{$c=\'1\',$d=\'2',$e='3\'}';
输出{$c='1',$d='23'},同时给$e赋值。
或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
并且,赋值可以在任何时候进行,这意味着可以
echo $a=3; //输出3,并且把3赋给$a
所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
echo '{$c='1',$d='2',$e='3'}';
它是一句错误的代码。
在发现错误后,它可能被我修改成
echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
输出{$c='1',$d='2',$e='3'}。
但是也有可能是
echo '{$c=\'1',$d='2',$e='3\'}';
输出{$c='123'},同时给$d和$e赋值。
或者也可能是
echo '{$c=\'1\',$d=\'2',$e='3\'}';
输出{$c='1',$d='23'},同时给$e赋值。
或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
echo "<a href="$url"></a>";
根据你描述的规则,它会被自动修复成
echo "<a href=\"$url\"></a>";
但事实上,我的
$url='"http://g.cn"';
它已经有一对引号了,我需要把它修复成
echo "<a href=".$url."></a>";
但是,程序按照既定的规则自动修复了我的错误,所以程序顺利执行了,但是结果却不是我想要的。如果代码量非常大,我可能完全不清楚到底是什么地方出现的问题,我可能要花大量的时间才能找到错误的所在,甚至有时候发现不了哪里错了。
但是,如果php报告了错误,那么解决问题还不要30秒钟。