这是两行代码。谁能告诉我第一种方式和第二种方式之间有什么区别?我希望两者做同样的事情。
$test = isset($_POST['test'])?$_POST['test']:[];
if(isset($_POST['test'])){
$test[] = $_POST['test'];
}
谢谢!
答案 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中此页面的三元运算符部分。