最短的if / else使用三元运算符

我有这段代码:

<?=!empty($options["placeholder"]) ? $options["placeholder"]:'search...'?>

我的印象是我可以做的:

<?=!empty($options["placeholder"]) ?:'search...'?>

但是当$options["placeholder"]不为空时,它返回1,因为它是一个三元运算符。

我必须总是发出2次变量吗?


如果你可以确定$options['placeholder']将被设置 - 如果没有,你可以用@作为前缀来抑制警告 - 你可以删除empty调用:

<?= $options["placeholder"] ?: 'search...' ?>

Elvis操作符?:计算结果为左侧如果(它是truthy true时强制转换为boolean值,如1或一个非空字符串'foo' )或右手侧即使不是。


是。 然而,有很多要求改变这一点的请求:

  • https://wiki.php.net/rfc/ifsetor
  • https://wiki.php.net/rfc/isset-set-operator
  • 链接地址: http://www.djcxy.com/p/57731.html

    上一篇: Shortest if/else using ternary operators

    下一篇: Short version of $x ? $x : $y expression