只需忽略此消息。
在 PHP 中,您使用的方式foreach
是最快的。正确的是,您应该避免使用未使用的变量,但在这种情况下,您无法避免它,而不会损失一些性能。
例如
比foreach(array_keys($arr) as $key)
慢大约 50% 到 60% 。
foreach($arr as $key => $notUsed)
这个问题的 phpmd 已经在这里报告了,这里也已经有一个拉取请求。
在更新 phpmd 之前,您还可以使用这个小技巧
在方法的文件/src/main/php/PHPMD/Rule/UnusedLocalVariable.php
中collectVariables(..)
(在我的情况下为第 123 行)替换
if ($this->isLocal($variable))
经过
if ($this->isLocal($variable) && !($this->isChildOf($variable, 'ForeachStatement') && $variable->getName() === '$notUsed'))
这将阻止 phpmd 报告foreach 循环内的$notUsed
任何位置。
更新:
上述建议假定 PHP 5.6(撰写此答案时的相关版本)。但是时间过去了,现在使用 PHP 7.2 似乎正好相反。与往常一样,它取决于确切的用例,但对于少于 100.000 个键的关联数组,将其存储array_keys($arr)
在变量中并在 foreach 循环中使用它会更快。