这让我失去理智,所以请帮助:
$param[] = ($k == 'page') ? (($i > 1) ? "{$k}-{$i}" : null) : "{$k}-{$v}";
我想要的是:
if ($k == 'page')
if ($i > 1)
$param[] = "{$k}-{$i}";
else
$param[] = null;
else
$param[] = "{$k}-{$v}";
谢谢!
答案 0 :(得分:3)
首先引用ternary operator上的php手册:
建议您避免“堆叠”三元表达式。 PHP的 在单个中使用多个三元运算符时的行为 陈述不明显
这就是if语句的用法...当你需要再次阅读代码时,你会遇到问题...但如果你坚持:
$param[] = (($k == 'page') ? (($i > 1) ? "{$k}-{$i}" : null) : "{$k}-{$v}")
始终在这些情况下使用括号。
答案 1 :(得分:0)
出于好奇,这个更清楚:
$param[] = ($k == 'page') ? ( ($i > 1) : 'page-'.$i : null ) : $k.'-'.$v;
你真的想插入null吗?
修改强>
我想你想要这个:
($k == 'page' && $i > 1) ? $params[] = 'page-'.$i : $params[] = $k.'-'.$v;
或
$params[] = ('page' == $k && 1 < $i) ? 'page-'.$i : $k.'-'.$v;
但是!不要这样做。
相反,只需保持简单并执行:
if('page' == $k && 1 < $i) {
// some comment
$params[] = 'page-'.$i;
} else {
// some comment
$params[] = $k.'-'.$v;
}