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:如果值存在,则对行进行更新,如果值不存在,则插入 [重复]
Javascript / Typescript如果变量存在则返回如果不返回其他内容[重复]