【问题标题】:is there a php equivalent to javascripts a = b && b.c || d有没有相当于 javascripts a = b && b.c || 的 php d
【发布时间】:2012-12-13 11:53:49
【问题描述】:

有什么方法可以模仿 php 中的 javascripts 松散变量处理吗? 例如,在php中我必须写

$instituteID = ( isset( $p['regInstituteName'] ) && isset( $p['regInstituteName']['ID'] ) ) ? $p['regInstituteName']['ID'] : null;

而在 javascript 中这会浓缩为

instituteID = p.regInstituteName && p.regInstituteName.id || null;

看起来并没有太大的不同,但它加起来

【问题讨论】:

  • 没有。您最好的选择是使用压缩三元运算符 ?: 来替换惰性 OR ||
  • 在我个人看来,最好的方法是不要编写这种非平凡的表达式。请想想这些纯粹的人,他们将来会尝试理解你的代码。
  • 就我个人而言,我会将其抽象为一个这样使用的函数:$institureId = ifDefined($p, 'regInstituteName.ID')
  • @Deestan,我也有类似的想法。但你的看起来更好,谢谢。

标签: php javascript variables


【解决方案1】:

基本上……没有。过去有have been some proposals,但都被拒绝了。

编辑:您可以优化它,以防您乐意抛出E_NOTICE 错误。但我建议不要这样做。

【讨论】:

  • 浓缩三元呢?
  • 没有解决。 OP 需要先做一个isset()isset($x) || $x 的结果会是一个布尔值。
【解决方案2】:

您的箱子只需要一个isset

因为如果设置了$p['regInstituteName']['ID'],则始终设置$p['regInstituteName']

$instituteID = isset($p['regInstituteName']['ID']) ? $p['regInstituteName']['ID'] : null;

【讨论】:

  • 不知道。想走肯定的路,但感谢这个提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多