有什么作用?... : ...男孩

2022-08-30 21:28:57
$items = (isset($_POST['items'])) ? $_POST['items'] : array();

我不明白这段代码的最后一段”? $_POST['items'] : array();"

这种代码组合究竟有什么作用?

我用它来从html文本框中获取一堆值,并将其存储到会话数组中。但问题是,如果我尝试重新提交文本框中的数据,则新数组会话将完全覆盖旧会话数组的空白和全部。

我只想覆盖数组中已有值的位置。如果用户决定只填写几个文本框,我不希望上一个会话数组数据被空格(从空白文本框中)覆盖。

我认为上面的代码是问题所在,但我不确定它是如何工作的。请启发我。


答案 1

这是一个三元运算符

如果计算结果为 ,则表达式的计算结果为 ,如果计算结果为 。(expr1) ? (expr2) : (expr3)expr2expr1TRUEexpr3expr1FALSE


答案 2

最后一部分称为条件运算符。基本上,这是一个浓缩的陈述。if/else

它的工作原理如下:

$items =
    // if this expression is true
    (isset($_POST['items'])) 
    // then "$_POST['items']" is assigned to $items
    ? $_POST['items'] 
    // else "array()" is assigned
    : array();

此外,这里还有一些可能更简单的伪代码:

$items = (condition) ? value_if_condition_true : value_if_condition_false;

编辑:这里有一个快速的,迂腐的旁注:PHP文档将此运算符称为三元运算符。虽然条件运算符在技术上是三元运算符(即具有 3 个操作数的运算符),但将其称为三元运算符是用词不当(并且相当推定)。


推荐