pay*_*ing 18 php syntax ternary-operator
$items = (isset($_POST['items'])) ? $_POST['items'] : array();
Run Code Online (Sandbox Code Playgroud)
我不明白这段代码的最后一段" ? $_POST['items'] : array();"
这些代码组合到底做了什么?
我使用它从html文本框中获取一堆值并将其存储到会话数组中.但问题是,如果我尝试在文本框中重新提交数据,新的数组会话将完全覆盖旧的会话数组空白和所有空格.
我只想覆盖已经有值的数组中的位置.如果用户决定只填写几个文本框,我不希望先前的会话数组数据被空格(来自空白文本框)覆盖.
我认为上面的代码是问题所在,但我不确定它是如何工作的.请赐教.
And*_*are 17
最后一部分称为条件运算符.基本上它是一个简洁的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();
Run Code Online (Sandbox Code Playgroud)
这里还有一些伪代码可能更简单:
$items = (condition) ? value_if_condition_true : value_if_condition_false;
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个快速,迂腐的旁注:PHP文档将此运算符称为三元运算符.虽然条件运算符在技术上是一个三元运算符(即具有3个操作数的运算符),但将它称为三元运算符是一种误称(而非推定).
| 归档时间: |
|
| 查看次数: |
15636 次 |
| 最近记录: |