我正在使用在 https://stackoverflow.com/a/25749660 找到的答案为了按最喜欢的语言对 $_SERVER['HTTP_ACCEPT_LANGUAGE']
数组进行排序。
在那个答案中(顺便说一句,它工作得很好),一行是:
list($a, $b) = explode('-', $match[1]) + array('', '');
在 PhpStorm 中,我收到该行的以下错误:
“未使用的局部变量$b:立即覆盖变量的值”。
我对这条线到底做了什么感到有点困惑,所以我不知道我是否应该保持不变,或者我是否应该将其修改为:
list($a) = explode('-', $match[1]) + array('', '');
...这似乎也工作正常。
是否应该更改?
最佳答案
措辞令人困惑,因为它是对涵盖两种情况的检查的完整解释,而初始工具提示仅显示第一行,恰好描述了其他情况。如果你点击 Ctl+F1 你可以阅读完整的文本,这更有意义(强调我的):
Unused local variable 'b'. The value of the variable is overwritten immediately. less... (Ctrl+F1)
Inspection info: A variable is considered unused in the following cases:
- The value of the variable is not used anywhere or is overwritten immediately.
- The reference stored in the variable is not used anywhere or is overwritten immediately.
这正是这里发生的事情:
list($a, $b) = …
$a
稍后使用,但 $b
不是。由于从未使用过 $b
,因此这也适用:
list($a) = explode('-', $match[1]) + array('', '');
(请记住,这些检查是防止潜在错误的提示,不一定是错误。)
关于PHP:list() 在 PhpStorm 中给出未使用的局部变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689922/