Php 从计算中得到错误的复数 $n=21; $p=$n%10==1&$n%100=11 ? 0:$n%10>=2&&$n%10

Php 从计算中得到错误的复数 $n=21; $p=$n%10==1&$n%100=11 ? 0:$n%10>=2&&$n%10,php,Php,应该是这个: $n=21; $p=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2; $p=($n%10==1&&n%100!=11)?0:($n%10>=2&&$n%10应该是这个: $n=21; $p=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2

应该是这个:

$n=21;
$p=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;
$p=($n%10==1&&n%100!=11)?0:($n%10>=2&&$n%10应该是这个:

$n=21;
$p=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;
$p=($n%10==1&&$n%100!=11)?0:($n%10>=2&&$n%10您可以在这里看到:“建议您避免“堆叠”三元表达式。在一条语句中使用多个三元运算符时,PHP的行为是不明显的”。如果在(和)之间的第一条语句中包含else部分,您可以看到您将获得另一个结果:

$p=($n%10==1 && $n%100!=11) ? 0 : (($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20)) ? 1 : 2);
$p=$n%10==1&&$n%100!=11?0:($n%10>=2&&$n%10=2&&$n%10您可以在这里看到:“建议您避免“堆叠”三元表达式。在单个语句中使用多个三元运算符时,PHP的行为是不明显的”。您可以看到,如果在(和)之间为第一个if括起else部分您将获得另一个结果:

$p=($n%10==1 && $n%100!=11) ? 0 : (($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20)) ? 1 : 2);

$p=$n%10==1&&$n%100!=11?0:($n%10>=2&&$n%10=2&&$n%10应该已经发现了,读错了!=让我走错了路。:) +1@David巴克,谢谢。不管怎样,我甚至没有试图理解这段代码,只是纠正了错误,所以你的回答很有趣!应该已经发现了,误读了!=引导我走错了路。:) +1@David巴克,谢谢。不管怎样,我甚至没有试图理解这段代码,只是纠正了错误,所以你的答案很有趣!