什么是“$ mark_state_id = $ r ['mark_state_id'] == 2?1:2;”是什么意思?

时间:2015-06-15 06:36:30

标签: php mysql sql sqlite

roles_to_categories是什么意思?

朋友,上面做了什么?

3 个答案:

答案 0 :(得分:1)

最好写成(为清晰起见,括号):

$mark_state_id = ($r['mark_state_id'] == 2 ? 1 : 2);

表示"如果$r['mark_state_id']等于2,则返回1,否则返回2.然后$mark_state_id将获取上面返回的值。这相当于:

$mark_state_id;
if($r['mark_state_id'] == 2){
   $mark_state_id = 1;
} else {
   $mark_state_id = 2;
}

它使用ternary operator作为if / else。

的简写

答案 1 :(得分:0)

这是一个三元运算符,说的是:如果$r['mark_state_id'] = 2,则$mark_state_id = 1,否则$mark_state_id = 2。

这基本上意味着这个if / else语句:

if($r['mark_state_id'] == 2){
  $mark_state_id = 1;
} else {
  $mark_state_id = 2;
}

答案 2 :(得分:0)

  

表达式(expr1)? (expr2):( expr3)如果expr1的计算结果为TRUE,则计算结果为expr2;如果expr1计算结果为FALSE,则计算结果为expr3。

它会检查$r['mark_state_id'] == 2。如果是true,则会分配1其他2$mark_state_id = $r['mark_state_id'] == 2 ? 1 : 2;类似于 -

if($r['mark_state_id'] == 2) {
    $mark_state_id = 1;
} else {
    $mark_state_id = 2;
}

Ternary Operator

  

三元运算符是一个表达式,它不会计算变量,而是表达式的结果。知道是否要通过引用返回变量很重要。声明返回$ var == 42? $ a:$ b;因此,在返回引用函数中将不起作用,并在以后的PHP版本中发出警告。