繁体   English   中英

PHP:使用三元运算符进行赋值以外的其他操作–有效的用例?

[英]PHP: Using the ternary operator for something else than assignments – valid use case?

不幸的是,我还没有找到任何官方资源。

是否可以像这样使用三元运算符来缩短和if / else语句:

(isset($someVar) ? $this->setMyVar('something') : $this->setMyVar('something else'));

在PHP文档中,此示例说明了三元运算符:

$action = (empty($_POST['action'])) ? 'standard' : $_POST['action'];

这使我相信我的用例可能会起作用,但它实际上无效,因为setter函数不会返回任何内容。

是的你可以。 PHP Doc

[...]三元运算符是一个表达式,并且它的值不是表达式的结果,而是表达式的结果。

引用的话,尽管三元数主要用于分配值,但是您可以按照建议使用它,因为函数调用是一个表达式,因此将评估(并执行)适当的函数。

如果您的setter函数将返回一个值,则它将根本不会分配给任何值,因此将丢失。 但是,由于您说的是setter不会返回任何内容,因此整个三元运算符将求值不返回任何内容。 没关系。

如果这比常规if / else更具可读性,则是另外一个故事。 在团队中工作时,我建议坚持常规的if / else。

或者,使用这种语法会更常见吗?

$this->myVar = isset($someVar) ? 'something' : 'something else';

或者,使用您的二传手:

$this->setMyVar(isset($someVar) ? 'something' : 'something else');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM