【发布时间】:2015-02-07 00:43:34
【问题描述】:
我想将此代码转换为三元运算符:
if (isset($a)) {
$arr[$k] += $c;
}
else {
$arr[$k] = $c;
}
如果是单个运算符,我可以做到,但是 if 和 else 中的运算符不同。
怎么做?
【问题讨论】:
标签: php if-statement ternary-operator
我想将此代码转换为三元运算符:
if (isset($a)) {
$arr[$k] += $c;
}
else {
$arr[$k] = $c;
}
如果是单个运算符,我可以做到,但是 if 和 else 中的运算符不同。
怎么做?
【问题讨论】:
标签: php if-statement ternary-operator
可能的转换算法与您的情况(如学校代数)
直接转换。
isset($a) ? ($arr[$k] += $c) : ($arr[$k] = $c);
分解 +=
isset($a) ? ($arr[$k] = $arr[$k] + $c) : ($arr[$k] = $c);
将分配向左移动
$arr[$k] = isset($a) ? ($arr[$k] + $c) : ($c);
移动 $c
$arr[$k] = (isset($a) ? $arr[$k] : 0) + $c;
没有三元的变体(作为奖励)。
$arr[$k] = $c + isset($a) * $arr[$k];
【讨论】:
不就是这样吗:
$arr[$k] = isset(a$) ? ($arr[$k]+$c) : $c
或等效:
$arr[$k] = $c + (isset($a) ? $arr[$k] : 0)
【讨论】: