Php 三元运算符混淆

Php 三元运算符混淆,php,if-statement,ternary-operator,Php,If Statement,Ternary Operator,这让我失去理智,所以请帮助我: $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}"; 谢谢 首先引用php手

这让我失去理智,所以请帮助我:

$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}";

谢谢

首先引用php手册:

建议您避免“堆叠”三元表达式。PHP的 在一个操作系统中使用多个三元运算符时的行为 这种说法并不明显

这就是如果声明是为了。。。当您以后需要再次阅读代码时,您将遇到问题。。。但如果你坚持:

$param[] = (($k == 'page') ? (($i > 1) ? "{$k}-{$i}" : null) : "{$k}-{$v}")

在这些情况下始终使用括号。

首先引用php手册中关于:

建议您避免“堆叠”三元表达式。PHP的 在一个操作系统中使用多个三元运算符时的行为 这种说法并不明显

这就是如果声明是为了。。。当您以后需要再次阅读代码时,您将遇到问题。。。但如果你坚持:

$param[] = (($k == 'page') ? (($i > 1) ? "{$k}-{$i}" : null) : "{$k}-{$v}")

在这些情况下始终使用括号。

出于好奇,这是否更清楚:

$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)?”第-'.$i:$k.-'.$v页;
但是!不要这样做

相反,只需保持简单,并执行以下操作:

if('page' == $k && 1 < $i) {
 // some comment
 $params[] = 'page-'.$i;
} else {
 // some comment
 $params[] = $k.'-'.$v;
}
if('page'=$k&&1<$i){
//一些评论
$params[]=“第页-”.$i;
}否则{
//一些评论
$params[]=$k.-'.$v;
}

出于好奇,这是否更清楚:

$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)?”第-'.$i:$k.-'.$v页;
但是!不要这样做

相反,只需保持简单,并执行以下操作:

if('page' == $k && 1 < $i) {
 // some comment
 $params[] = 'page-'.$i;
} else {
 // some comment
 $params[] = $k.'-'.$v;
}
if('page'=$k&&1<$i){
//一些评论
$params[]=“第页-”.$i;
}否则{
//一些评论
$params[]=$k.-'.$v;
}

为什么要这样杀死小猫?你真的想在$param数组中插入字符串值“{$k}-{$v}”吗?请使用更详细的控制结构。简单易懂远远超过“代码行数更少”。为什么不使用多行版本呢?它应该可以工作。。也许你需要$k==='page'。你应该告诉我们出了什么问题,为什么你要这样杀死小猫?你真的想在$param数组中插入字符串值“{$k}-{$v}”吗?请继续使用更详细的控制结构。简单易懂远远超过“代码行数更少”。为什么不使用多行版本呢?它应该可以工作。。也许你需要$k==='page'。你应该告诉我们出了什么问题不,事实上我不知道,但是我怎么能不在链式三元结构中插入一些东西呢?不,事实上我不知道,但是我怎么能不在链式三元结构中插入一些东西呢?你真的不需要括号到那个程度。将整个作业括起来有什么作用?根本不能提高可读性。@Kenaniah我忽略了
($I>1)周围的括号?“{$k}-{$i}”:nul
在他的问题中,你真的不需要把括号括到那个程度。将整个作业括起来有什么作用?根本不能提高可读性。@Kenaniah我忽略了
($I>1)周围的括号?“{$k}-{$i}”:努尔在他的问题中