PHP - 一行或多行上的相同代码

时间:2013-09-15 16:49:18

标签: php

这是两行代码。谁能告诉我第一种方式和第二种方式之间有什么区别?我希望两者做同样的事情。

   $test = isset($_POST['test'])?$_POST['test']:[];

if(isset($_POST['test'])){
    $test[] = $_POST['test'];
}

谢谢!

3 个答案:

答案 0 :(得分:4)

如果未设置$test,则首先将$_POST['test']设置为空数组。但是,第二个不会将$test设置为默认值。实际上,如果$_POST['test']未设置,则$test将不存在/未定义/等。

您需要在第二个文件的开头运行$test = [];以存档完全相同的结果。

答案 1 :(得分:0)

顶行等同于

if(isset($_POST['test'])){
     $test = $_POST['test'];
}else{
     $test = [];
}

答案 2 :(得分:0)

第一个使用三元运算符,它是if (X) then $a = b else $a = c的简写,如果它不为空,则将$test设置为$_POST['test'],或者将$ test设置为空数组。< / p>

第二个示例没有else大小写,因此如果$test为空,它将保留$_POST['test']未定义。

另请参阅PHP手册http://www.php.net/manual/en/language.operators.comparison.php中此页面的三元运算符部分。