【问题标题】:How does shorthand if/else work? [PHP]速记 if/else 是如何工作的? [PHP]
【发布时间】:2014-12-05 08:35:51
【问题描述】:

我一直在尝试将我的 PHP 翻译成简写版本,只是为了学习新东西的乐趣,但我无法让我的工作。我在 SO 上查看了许多其他关于此的问题,但我无法根据我的情况调整其中任何一个。

我想翻译成简写:

if ($active_page === "front-page") {echo $active_page;}

我有什么:

echo ($active_page === 'front-page') ? 'front-page';

我知道这是一个很短的句子,但只是为了学习新的东西,我想把它简写。在给我解决方案时,请尝试解释我做错了什么以及将来如何正确处理它。

【问题讨论】:

  • 声明?真:假;
  • 这是 if/else 的简写,而不是 if 的简写:echo ($active_page === 'front-page') ? 'front-page' : '';
  • 我想你会想要添加第二个参数,以便echo 在你的条件不满足时有一个参数。 IE。 echo ($active_page === 'front-page') ? 'front-page' : '';
  • @Mark Ba​​ker 所以它不起作用,因为我忘记了else
  • @Rvervuur​​t 精确

标签: php shorthand shorthand-if


【解决方案1】:

正确的语法是

condition ? then statement : else statement;

注意,else 语句必须存在。正如 cmets 所建议的那样,else 可能是 ''

【讨论】:

  • 啊,好吧,是因为我没有添加,所以它不起作用?为什么正常的 if 语句可以在没有 else 的情况下工作,但不能使用速记 if 语句?是因为它是 if/else 语句的简写吗?
  • 虽然正确你的解释有点混乱。
  • 换句话说,它不仅仅是古老的if 的替代语法。这是一个完全不同的结构。
  • 普通的if 语句结构要复杂得多,因为它还支持elseifelse.... 从技术上讲,“速记”版本实际上并不是简写if/else 语句,而是一个运算符(三元运算符)
【解决方案2】:

定义方式是

statement ? true : false;

因此,对于您的示例,您还需要一个 false 值。

echo ($active_page === 'front-page') ? 'front-page' : 'Some default value.';

Here's a link我发现他们有一些很好的信息。

该链接的一个要点是,如果它中断,您可以嵌套内联 ifs。

echo ($active_page === 'front-page') ? (($somevar > 5) ? 'Above 5' : 'Below 5') : 'Some default value.';

【讨论】:

  • 我从不推荐堆叠三元运算符,因为很难正确读取逻辑
  • 我同意在某种程度上,如果它只是像示例中的一个,并且不是很长,我会堆叠,但我同意,将它分开。
猜你喜欢
  • 2014-08-08
  • 2016-10-06
  • 2011-07-17
  • 2016-12-26
  • 2016-05-15
  • 2013-04-08
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
相关资源
最近更新 更多