这个PHP(函数/构造?)做什么,我在哪里可以找到更多关于它的文档?

这个PHP(函数/构造?)做什么,我在哪里可以找到更多关于它的文档?,php,Php,简单的问题。这是代码 $r = rand(0,1); $c = ($r==0)? rand(65,90) : rand(97,122); $inputpass .= chr($c); 我理解它在结果中的作用,但是我想对它的工作原理有一个更好的解释,这样我就可以自己使用它了。如果这是一个糟糕的问题,很抱歉 如果你不确定我在问什么,这里使用的(功能?): $c=($r==0)?兰特(65,90):兰特(97122)这意味着: if($r==0){ $c = rand(6

简单的问题。这是代码

    $r = rand(0,1);
    $c = ($r==0)? rand(65,90) : rand(97,122);
    $inputpass .= chr($c);
我理解它在结果中的作用,但是我想对它的工作原理有一个更好的解释,这样我就可以自己使用它了。如果这是一个糟糕的问题,很抱歉

如果你不确定我在问什么,这里使用的(功能?):

$c=($r==0)?兰特(65,90):兰特(97122)

这意味着:

if($r==0){
  $c = rand(65,90);
else{
  $c = rand(97,122);
}
如果该语句为true,则执行该
之后的第一个操作,否则执行
之后的操作


它叫做三元运算符。

。它实际上相当于

if ($r == 0) {
    $c = rand(65, 90);
} else {
    $c = rand(97, 122);
}
但它显然更紧凑一些。有关更多信息,请查看。

这是


表达式(expr1)?(expr2):(expr3)如果expr1计算为TRUE,则计算为expr2;如果expr1计算为FALSE,则计算为expr3。 由于PHP5.3,可以省略三元运算符的中间部分。表达式expr1?:如果expr1的计算结果为真,则expr3返回expr1,否则返回expr3


这叫做三元算子。它类似于if/else构造,但区别在于使用三元运算符的表达式会产生一个值

也就是说,不能将变量设置为if/else构造的结果:

// this doesn't work:
$c = if ($r == 0) {
         rand(65, 90);
     } else {
         rand(97, 122);
     }
您可以在此处阅读更多信息:

三元运算符经常被误用。在您展示的示例中使用它没有什么好处。有些程序员喜欢使用compact,即使不需要它。甚至在更清楚地写出完整的if/else结构时


如果你使用一个工具来测量测试所覆盖的代码行,三元运算符也会模糊测试覆盖范围。

可能是+1的重复,因为它愿意提出问题来找出发生了什么,而不是盲目地使用它。当然这意味着它不能有任何
,否则if
语句?@Rob Well,如果希望获得相同的效果,可以嵌套三元组,但它会变得很混乱:
$c=$r==0?兰特(65,90):($r==1?某物:兰特(97122))。如果你想要其他的If,我总是选择一个明确的If语句。看起来很疯狂。谢谢你的帮助,克里斯
// this doesn't work:
$c = if ($r == 0) {
         rand(65, 90);
     } else {
         rand(97, 122);
     }