PHP三元表达式/If语句

PHP三元表达式/If语句,php,if-statement,ternary-operator,Php,If Statement,Ternary Operator,我正在学习PHP中的三元表达式,想知道是否有人可以验证以下两段代码是否相同,结果如何 $caption = $_POST['caption'] == '' ? NULL : $_POST['caption']; 上面的和下面的一样吗 if ( $_POST['caption'] == '' ) { $caption = NULL; } else { $caption = $_POST['caption']; } 是的,它们是一样的 $vn = condition ? expr

我正在学习PHP中的三元表达式,想知道是否有人可以验证以下两段代码是否相同,结果如何

$caption = $_POST['caption'] == '' ? NULL : $_POST['caption'];
上面的和下面的一样吗

if ( $_POST['caption'] == '' ) {
    $caption = NULL;
}
else {
    $caption = $_POST['caption'];
}
是的,它们是一样的

$vn = condition ? expression1:expression2;

if(condition) {
    $vn = expression1;
}
else {
   $vn = expression2;
}

你的情况很好。但请确保您有
标题
输入
$\u POST
数组

$caption = empty($_POST['caption']) ? NULL : $_POST['caption'];

或函数在这种情况下很有用

$a = '';
var_dump(isset($a));      // TRUE
var_dump(empty($a));      // TRUE

我觉得不错。情况还行。确保$\u POST中存在标题键。使用空函数。像这样吗$caption=isset($_POST['caption'])=''?空:$_POST['caption'];为什么需要检查是否设置了$\u POST['caption']?如果$\u POST['caption']=''(空字符串),这不意味着自动设置了它吗?如果$\u POST数组中不存在标题键,并且如果您将条件写为**$\u POST['caption']=''**然后它会给你一个错误。我复制并粘贴了你的代码在我的脚本中,我仍然得到错误:注意:未定义的索引:caption。这样写你的条件:-$caption=(isset($\u POST['caption'])&&$\u POST['caption']=''$_POST['caption']:空;谢谢,这就是我要找的。
$a = '';
var_dump(isset($a));      // TRUE
var_dump(empty($a));      // TRUE