有人可以解释一下Symfony Cookbook中的以下一行(主题是主题是提交表格的动态生成)
我不会忽略以下内容:?, array():
$sport = $event->getData()->getSport(); // getdata submited by the user in the Sport input
$positions = null === $sport ? array() : $sport->getAvailablePositions();
// is it similaire to that line? what the difference?
$positions = $event->getData()->getSport()->getAvailablePositions();
答案 0 :(得分:1)
?是三元如果;这是单行上的if语句 它可以改写为
if (null === $sport) {
$positions = array(); // an empty array
} else {
$positions = $sport->getAvailablePositions();
}
答案 1 :(得分:0)
该行说明,如果$sport
为空(===表示同时检查类型/值),$sport
将为空array()
,如果不是,$sport
将是$sport->getAvailablePositions();
$positions
只是得到它的结果!
答案 2 :(得分:0)
它是一个三元条件运算符。它是if if后跟一个做作的因式分解。Documentation
答案 3 :(得分:0)
这被称为" Ternary Logic"。你可以在这里查看一篇好文章:http://davidwalsh.name/php-shorthand-if-else-ternary-operators
逻辑是:
目标是在最后和所有情况下都有可迭代的东西,比如数组,集合等。
它与$positions = $event->getData()->getSport()->getAvailablePositions();
不相似,因为如果getSport()
返回null,则会抛出错误,因此在空值上调用getAvailablePosition()
。