duanpanhuo0618 2018-08-04 22:14
浏览 626
已采纳

PHP:list()在PhpStorm中给出未使用的局部变量错误

I am using the answer found at https://stackoverflow.com/a/25749660 in order to sort the $_SERVER['HTTP_ACCEPT_LANGUAGE'] array by the most preferred language.

In that answer (which is working great by the way), one line is:

list($a, $b) = explode('-', $match[1]) + array('', '');

Within PhpStorm, I get the following error for that line:

"Unused local variable $b: The value of the variable is overwritten immediately".

I'm a little confused as to what this line is doing exactly, so I don't know if I should just keep it the same, or if I should modify it to:

list($a) = explode('-', $match[1]) + array('', '');

... which also seems to be working fine.

Should it be changed?

  • 写回答

2条回答 默认 最新

  • duanjie5570 2018-08-04 22:29
    关注

    You can't join arrays with the arithmetic operator +. Basically you are telling PHP to convert the arrays to scalar types and then sum them, which yields you a number (probably arrays evaluate to 1 if it has elements and 0 if it doesn't).

    The result is that effectively you are doing something like:

    list($a, $b) = 2;
    

    And the conclusion PHP reaches is that you haven't specified enough elements to define all the variables in the list.

    To join two arrays together, use array_merge().

    list($a, $b) = array_merge(explode('-', $match[1]), array('', ''));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?