PHP:如果不存在则设置的简短语法并递增[重复]

Posted

技术标签:

【中文标题】PHP:如果不存在则设置的简短语法并递增[重复]【英文标题】:PHP: short syntax for set if not exists and increment [duplicate] 【发布时间】:2018-11-10 05:22:47 【问题描述】:

下面的代码是否有更短的语法:

if (!isset($foo)) 
    $foo = $bar;

$foo += $bar;

=== 编辑 ===

此语法略短:

isset($foo) ? $foo += $bar : $foo = $bar;

但我仍然想知道它是否可以写得更短。

【问题讨论】:

为什么不知道$foo 是否设置?将其初始化为代码块顶部的0,完成。 我使用这种语法在foreach 语句中创建子数组并增加它。我看不到对增量的任何引用是提到的问题,我怀疑它是重复的,但我可能错过了一些东西。 如果您需要针对您的具体情况的适当建议,您将不得不展示更多代码,而不仅仅是无上下文的 sn-p。 【参考方案1】:
$foo = (!isset($foo))?0:$foo+$bar;

试试这个。

【讨论】:

操作不一样,还是报错。 更新了我的代码。 这比原来的问题更难读 @iainn 问题是要以更短的方式编写它。从来没有人要求用更漂亮的方式来编写它。【参考方案2】:

您从一开始就不需要进行这种检查。在程序/函数/块的开头初始化你的变量,你很少需要isset

$foo = 0;

// here be dragons

$foo += $bar;

【讨论】:

问题不是“我应该这样做”而是“我如何写一个更短的 if 语句” 而“如何避免射击我的脸”的答案是“首先不要将枪对准你的头”。 使用您自己的类比,您对该问题的回答将是“不拥有枪支”。 现在我们只是在争论类比的语义。关键是,有时您需要解决与您具体询问的问题不同的问题。 别误会,我同意你的看法。但是你没有这个问题的背景。它的编写方式可能有一个很好的理由。或者,你知道,这家伙只是想知道如何使用 IF 速记,并举了一个坏例子。如果您想继续进行此操作,请务必进行聊天。【参考方案3】:
$foo = (!isset(foo) ? 0 : null);
$foo += $bar;

或者类似的东西。三元运算符了解更多信息。

【讨论】:

如果设置了$foo,你设置为null...?不一样的操作。

以上是关于PHP:如果不存在则设置的简短语法并递增[重复]的主要内容,如果未能解决你的问题,请参考以下文章

数据库:如果存在则“更新”如果不存在则插入 [重复]

MySQL:如果值存在,则对行进行更新,如果值不存在,则插入 [重复]

如果存在mysqli php,则编辑重复

Javascript / Typescript如果变量存在则返回如果不返回其他内容[重复]

是否有用于设置值的最大或最小限制的 JS 简短语法 [重复]

如果存在则如何更新,否则在php mysql中插入[重复]