比如
$id = $name != '' ? $key : (is_numeric($key) ? $key : '');
歌词大意
如果 $name != '' $id 等于 $key 否则 如果 $key 是数字, $id 等于 $key,否则 $id 等于空
1 hoythan OP 小括号是我瞎编的,我不知怎么连续写. |
![]() | 3 shiny 2017-02-16 18:13:58 +08:00 这种情况慎用三元运算符 |
![]() | 4 ALeo 2017-02-16 18:15:46 +08:00 这种三目表达式 写那么复杂干嘛呢。。 其实也就是 $id = $name != '' && is_numeric($key) ? $key : ''; 就可以了。 |
![]() | 5 allenhu 2017-02-16 18:17:02 +08:00 拖出去剁了 |
6 wclssdn 2017-02-16 18:17:04 +08:00 你这么写你自己看的懂么?看你代码的其他人看的懂么? 如果你想看着简介(简短,易懂),可以看看这段: $id = ''; $name && is_numeric($key) && $id = $key; // 如果 name 不为空,并且 key 是数字,则 id=key |
10 Mitt 2017-02-16 18:33:07 +08:00 如果是三元的话 可以 exp ? ret1 : exp2 ? ret2 : exp3 ? ret3 : exp4 ? ret4 : ret5 ; 这种一直续下去的,当然你的代码更适合上面大神们说的 && 和 || 来解决问题, 我建议如果不是简单三目的话 宁可多写几行代码也不要用三目偷懒,因为对可读性是相对比较差的 |
11 hoythan OP |
![]() | 14 shiny 2017-02-16 19:29:25 +08:00 |
16 l12ab 2017-02-16 20:19:26 +08:00 这种情况我宁愿多写几个 if else ,看起来舒服些 |
![]() | 19 abugs 2017-02-16 21:07:50 +08:00 三元一般够用,如果你有多个 if ,建议使用常规 if else |
![]() | 20 konakona 2017-02-16 21:13:05 +08:00 这个可以的,这样写没有问题,能阅读。只是容易不小心写错。 |
![]() | 21 wizardoz 2017-02-16 21:16:11 +08:00 写多个条件就不是简写了 |
23 keinx 2017-02-16 21:28:59 +08:00 你入错行了,来 Python ,人生苦短我用 python |
![]() | 25 Reign 2017-02-16 21:32:27 +08:00 这年头,为了装逼也是蛮拼的 |
![]() | 26 cxbig 2017-02-17 01:51:40 +08:00 你见哪个外国人这么写赶快拉黑 Ternary Operator 嵌套不符合 Best Practice 原则。他人很难看清楚逻辑结构 在我们公司,写成这样绝对过不了代码审查 写成一行也不代表跑起来就快 |
![]() | 27 flydogs 2017-02-17 08:37:25 +08:00 老老实实 if else |
![]() | 28 juice 2017-02-17 09:08:44 +08:00 代码优先给人读,次之再给机器读 |
29 killerv 2017-02-17 10:16:37 +08:00 代码可读性很重要 |
31 v2dead 2017-02-17 10:53:35 +08:00 wordpress 出了名的烂代码,背了那么多年的历史包袱,你居然作参考。。 |
![]() | 32 orderc 2017-02-17 14:54:16 +08:00 论代码可读性的重要性 a == b && c = d ,我同事总这样写,每次看到这样的代码脑子都要短路一下 |