dongxinyue2817 2016-09-15 01:49
浏览 1014
已采纳

用条件声明变量

var foo, bar;

foo = 'hello'; // first
bar = 'world'; // otherwise

var baz = foo || bar;

console.log(baz);

wondering whats the PHP way of doing the above? I already know about the ternary operator:

$foo = $bar = '';

$foo = 'hello'; // first
$bar = 'world'; // otherwise

$baz = $foo ? $foo : $bar;

echo $baz;

.. but I'm looking to optimize here because the $foo in my case is MySQL query and I believe its executed twice(?) on check and then on assignment. Either way, I want to know if there's a more elegant DRY method of doing it.

Edit:

In PHP7 you can do:

$baz = $foo ?? $bar;

... but looking for something in PHP 5+

  • 写回答

1条回答 默认 最新

  • dongzheng7165 2016-09-15 01:51
    关注

    For this specific case, PHP provides a ?: shorthand, which only evaluates the condition once:

    $baz = $foo ?: $bar;
    

    But apart from that it's functionally equivalent to $foo ? $foo : $bar.

    EDIT: $foo ?? $bar is only for when $foo may be null. That operator is only available since PHP 7. ?: however is available since PHP 5.3. The ternary will check for false (loosely).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题