【问题标题】:Else is never necessary for an array operation数组操作永远不需要 Else
【发布时间】:2021-10-27 09:57:33
【问题描述】:

PHPMD 对以下代码说“永远不需要其他”:

if (!isset($myArray[$myKey])) { // or in_array
    $myArray[$myKey] = $myValue;
} else {
    $myArray[$myKey] += $myValue;
}

是否可以在没有 PHPMD 警告的情况下以更简洁的方式编写此代码?

我知道 "? ... : ..." 是一个选项,但它仍然是 if/else。

【问题讨论】:

  • 也许您已经确定您的阵列永远不会有那个特定的密钥?上下文很重要,即如何初始化和使用/返回数组。你能分享更多的代码吗?更多情况下,并非该规则建议您可以以更“干净”的方式重写您的逻辑。
  • phpmd 是否不受$myArray[$myKey]] 错误语法的干扰?最后一个] 是删除。
  • 什么是 $myKey 和 $myVaue?定义了吗?
  • MD 中可能存在的错误?正如你所说,我们可以使用速记语法,但它仍然是 if-else,如空合并运算符或三元运算符。

标签: php phpmd


【解决方案1】:

您可以检查数组键是否未设置,如果是,则使用默认值创建该键(如果数组包含数字,则为 0 或字符串为 '')。这将删除一些重复的代码,例如$myArray[$myKey] += $myValue;

if (!isset($myArray[$myKey])) { // or in_array
    $myArray[$myKey] = 0; // if the array contains numbers or '' for string
}
 
$myArray[$myKey] += $myValue;

【讨论】:

  • 很好的答案,谢谢,但我仍然认为以任何方式禁止功能是很奇怪的,这是在语言上下文中定义的。
  • @tolga 这不是被禁止的,你可以忽略它。这是该工具定义为“良好实践”的问题。查看此issue 了解更多详情。
猜你喜欢
  • 2023-03-12
  • 2023-04-11
  • 2013-12-08
  • 1970-01-01
  • 2016-01-31
  • 2014-09-03
  • 2021-03-17
  • 2014-02-24
  • 2014-07-08
相关资源
最近更新 更多