只需忽略此消息。
在PHP中,你使用的方式是最快的。没错,您应该避免未使用的变量,但是在这种情况下,您无法避免它,而不会失去一些性能。foreach
例如:
比 慢约 50% 至 60% 。foreach(array_keys($arr) as $key)foreach($arr as $key => $notUsed)
这里已经报告了phpmd的这个问题,这里也已经有一个拉取请求。
在phpmd更新之前,你也可以使用这个小技巧
在方法中的文件中(在我的情况下为第123行)替换/src/main/php/PHPMD/Rule/UnusedLocalVariable.phpcollectVariables(..)
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个键的关联数组,存储在变量中并在foreach循环中使用它会更快。array_keys($arr)