我有这段代码作为我无法完全理解的示例。
那么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
常规array()函数:
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
我完全知道要使用:
$user = array(
'username' => $user[0],
'password' => $user[1]
);
但是我有时想内联。
我是否可能错过了PHP Documentation about Arrays的东西?如果是,那是什么?
谢谢!
答案 0 :(得分:3)
您正在混淆。
数组创建语法如下:
$a = array(1,2,3);
$b = [1,2,3];
$a === $b; //true
-在这种情况下,array()
和[]
完全相等。
您的示例:
[$user['username'],$user['password']] = [$user[0],$user[1]];
-称为Symmetric array destructuring,在PHP 7.1中引入,以代替list()
。不能用array()
替换,但是在较早的版本中可以用list()
替换。