-1

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

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

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

谢谢 !

4

3 回答 3

4

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

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

于 2013-09-15T16:50:49.600 回答
0

顶线将相当于

if(isset($_POST['test'])){
     $test = $_POST['test'];
}else{
     $test = [];
}
于 2013-09-15T16:53:00.627 回答
0

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

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

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

于 2013-09-15T16:53:30.530 回答