理解三元声明

时间:2014-02-03 10:56:28

标签: php ternary

我已经准备好考虑一些旧代码并且遇到过这个问题:

$sal = isset($_REQUEST['c_sal']) ? " " : ($_REQUEST['sal'] ? (Valid($_REQUEST['sal']) ? $_REQUEST['sal'] : false) : null);

我正在努力弄清楚它的作用。 我知道它正在进行某种形式的验证......但是如何将其恢复为简单的if elseif语句呢?

所以我可以准确理解它在做什么?

2 个答案:

答案 0 :(得分:7)

以下三元操作

$sal = isset($_REQUEST['c_sal']) ? " " : ($_REQUEST['sal'] ? (Valid($_REQUEST['sal']) ? $_REQUEST['sal'] : false) : null);

与以下if语句相同:

if(isset($_REQUEST['c_sal'])){
    $sal = " ";
} else {
    if($_REQUEST['sal']){
        if(Valid($_REQUEST['sal'])){
             $sal = $__REQUEST['sal'];
        else {
             $sal = false;
        }
    } else {
        $sal = null;
    }
}

编辑:供您参考。没有你功能的三元:

$sal = isset($_REQUEST['c_sal']) ? " " : (isset($_REQUEST['sal']) ? $_REQUEST['sal'] : null);

答案 1 :(得分:4)

将其拆分为if / else等价物:

$sal = null;

if (isset($_REQUEST['c_sal'])) {
  $sal = " ";
} else {
 if ($_REQUEST['sal']) {
   if (Valid($_REQUEST['sal'])) {
     $sal = $_REQUEST['sal'];
   } else {
     $sal = false;
   }
  } else {
    $sal = null;
  }
}