isset($v) and print('true') or print('false'); 这样的写法对吗?

2013-11-12 21:01:19 +08:00
 Jat001

if (isset($v)) print('true');
else print('false');
的结果一致,但不知道对不对,没见过类似的例子。
3070 次点击
所在节点    PHP
9 条回复
jybox
2013-11-12 21:47:48 +08:00
and 优先级比 or 高,然后按照短路求值的规则,两种写法确实等价。
用这种方式要注意第二个部分的表达式必须要为 ture 才行。

这种写法因为太反人类确实比较少见,不过下面这种就比较常见了:

mysql_query($query) or die(mysql_error());
dorentus
2013-11-12 21:57:38 +08:00
单层双分支的话,还是用 isset($v) ? print('true') : print('false'); 吧。
dorentus
2013-11-12 21:58:05 +08:00
print($isset($v) ? 'true' : 'false');
Jat001
2013-11-12 22:13:37 +08:00
@jybox print() 的返回值是 1,exit() 没有返回值,但我试了 isset($v) and exit('true') or exit('false'); true 和 false 都能返回。
raincious
2013-11-12 22:17:59 +08:00
楼主不要这样写,这样会增加代码阅读的复杂程度,代码审核的同学不太方便。
Jat001
2013-11-12 22:33:29 +08:00
@raincious 这才叫不方便!
raincious
2013-11-12 22:53:21 +08:00
@Jat001 这……是有人删除了\r和\n么?Wordpress的模板系统这么一看是在是太丧心病狂了啊。
shiny
2013-11-12 22:57:13 +08:00
一样的,不过是典型的不友善的写法,代码主要是为了写给人看的,只是顺便也能用机器执行而已。
Discuz 里有差不多的东西,不过他们的源码教坏了很多 php 新手。
ichou
2013-11-13 21:49:56 +08:00
短路写法而已。。短路比起if其实优点蛮多的,但是你这种链式短路真心不推荐。。
最简单原因:丑
还是用三目运算吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89039

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX