PHP IF 简写怎么写多个条件

2017-02-16 18:06:43 +08:00
 hoythan

比如

$id = $name != '' ? $key : (is_numeric($key) ? $key : '');

歌词大意

如果 $name  != '' $id  等于 $key  否则
如果 $key  是数字, $id  等于  $key,否则 $id  等于空
4029 次点击
所在节点    PHP
37 条回复
hoythan
2017-02-16 18:07:09 +08:00
小括号是我瞎编的,我不知怎么连续写.
zhaohehe
2017-02-16 18:11:58 +08:00
@hoythan 就是小括号 但是不是很推荐吧 读起来有点费劲 😆
shiny
2017-02-16 18:13:58 +08:00
这种情况慎用三元运算符
ALeo
2017-02-16 18:15:46 +08:00
这种三目表达式 写那么复杂干嘛呢。。

其实也就是

··
$id = $name != '' && is_numeric($key) ? $key : '';

就可以了。
allenhu
2017-02-16 18:17:02 +08:00
拖出去剁了
wclssdn
2017-02-16 18:17:04 +08:00
你这么写你自己看的懂么?看你代码的其他人看的懂么?
如果你想看着简介(简短,易懂),可以看看这段:
$id = '';
$name && is_numeric($key) && $id = $key; // 如果 name 不为空,并且 key 是数字,则 id=key
nilai
2017-02-16 18:18:10 +08:00
@ALeo 真相帝。
hoythan
2017-02-16 18:21:53 +08:00
@zhaohehe
@shiny
我觉得外国佬都是这么写的.
hoythan
2017-02-16 18:22:28 +08:00
@ALeo 666 我思路太死板了.
Mitt
2017-02-16 18:33:07 +08:00
如果是三元的话 可以 exp ? ret1 : exp2 ? ret2 : exp3 ? ret3 : exp4 ? ret4 : ret5 ; 这种一直续下去的,当然你的代码更适合上面大神们说的 && 和 || 来解决问题, 我建议如果不是简单三目的话 宁可多写几行代码也不要用三目偷懒,因为对可读性是相对比较差的
hoythan
2017-02-16 18:35:04 +08:00
@ALeo 你写错了
```
$id = $name == '' && is_numeric($key) ? $key : '';
```
$name 要 == '' 才行.
shiny
2017-02-16 18:50:28 +08:00
@hoythan 不知道你遇到过,维护自己几年前的代码时候想抽自己。
hoythan
2017-02-16 18:52:04 +08:00
@shiny ...维护确实有点麻烦,但是我觉得照常写很 Low?
shiny
2017-02-16 19:29:25 +08:00
@hoythan 看目的:只是为了酷炫,爱怎么写怎么写;如果需要维护很多年,可读性是第一位的。

想要代码漂漂亮亮,我个人倒建议可以试试其他某些语言,比如 Ruby 。
xzem
2017-02-16 19:41:15 +08:00
@Mitt php 的三目不能这么些,你这么些不管前面是否为真都会一直执行到最后一个三目表达式
l12ab
2017-02-16 20:19:26 +08:00
这种情况我宁愿多写几个 if else ,看起来舒服些
realpg
2017-02-16 20:27:08 +08:00
@hoythan #13
敢这么写一次的员工我都开除了……
仅供参考
Mitt
2017-02-16 21:07:12 +08:00
@xzem 那就加个括号 2333 一般不会写那么多 超过两层判断就直接上 if else 了
abugs
2017-02-16 21:07:50 +08:00
三元一般够用,如果你有多个 if ,建议使用常规 if else
konakona
2017-02-16 21:13:05 +08:00
这个可以的,这样写没有问题,能阅读。只是容易不小心写错。

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

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

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

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

© 2021 V2EX