为什么 array() 和 [] 在此示例中的行为不同

我有这个代码作为我不能完全理解的例子。

所以 array() 和 [] 是完全一样的吗?有人说 [] 可能比 array() 稍微快一点,但这不是这个问题的主题。


这是代码:


function userLogin( $user, $return = null ) {


    [$user['username'],$user['password']] = [$user[0],$user[1]];


    switch ($return) {


        case 1:

            return $user['username'];


        case 2:

            return $user['password'];


        default:

            return $user['username'].":".$user['password'];


    }


}


print userLogin(['admin','secretkey']);

代码没有起到任何重要的作用,我知道,因为我把它作为一个例子放在那里。这个问题的主题是代码中的第三行,我正在使用短数组语法为数组内的用户名和密码分配一些值,但是当我尝试做同样的事情以使代码符合PHP 5.3 及以下版本。


array($user['username'], $user['password']) = array($user[0], $user[1]);

如果 array() 和 [] 相同,为什么 array() 在这种特定情况下不起作用?


控制台输出

短数组语法:


admin:secretkey

常规数组()函数:


PHP Parse error:  syntax error, unexpected '=' in C:\Users\Soricy\Desktop\fn.userLogin.php on line 3

Parse error: syntax error, unexpected '=' in C:\Users\Soricy\Desktop\fn.userLogin.php on line 3

编辑1:

我完全知道使用:


$user = array(

    'username' => $user[0],

    'password' => $user[1]

);

但我有时想内联。


所以...

我是否可能遗漏了PHP 文档中有关数组的内容,如果有,是什么?


呼啦一阵风
浏览 90回答 1
1回答

慕桂英4014372

你把事情搞混了。数组创建语法如下:$a = array(1,2,3);$b = [1,2,3];$a === $b; //true-- 在这种情况下array()和[]是完全相等的。你的例子:[$user['username'],$user['password']] = [$user[0],$user[1]];-- 称为对称数组解构,它在 PHP 7.1 中被引入以替代list(). 它不能被替换,array()但可以list()在旧版本中替换。
打开App,查看更多内容
随时随地看视频慕课网APP