不知何故这个数组不是数组?

Somehow this array is not an array?

下面的代码return一些让我莫名其妙的结果...

if(is_array($loginUser)) {         
    $_SESSION['name'] = $loginUser['firstname'];
    $_SESSION['id'] = $loginUser['id'];
    print_r($_SESSION['name']);
    print_r($loginUser);
    var_dump($loginUser[1]);
    exit();
    header("Location: ../index.php?page=home");
}

那个returns:

Notice: Undefined index: firstname in wwwroot/includes/userhandler.php on line 124

Notice: Undefined index: id in wwwroot/includes/userhandler.php on line 125

Array ( [0] => Array ( [0] => 4 [id] => 4 [1] => Johnny [firstname] => Johnny [2] => Appleseed [lastname] => Appleseed [3] => ja@ja.com [email] => ja@ja.com [4] => johnny'shashedpassword [password] => johnny'shashedpassword ) ) 

Notice: Undefined offset: 1 in wwwroot/includes/userhandler.php on line 129

NULL

idfirstName 存储在一个数组中,键为 0

改变

$_SESSION['name'] = $loginUser['firstname'];
$_SESSION['id'] = $loginUser['id'];

$_SESSION['name'] = $loginUser[0]['firstname'];
$_SESSION['id'] = $loginUser[0]['id'];

但我看不出为什么 $loginUser 数组中有额外的维度。尝试重构 $loginUser 构建数组的方式

稍后在您调用的代码中 var_dump($loginUser[1]); 这是 returns 你的第二条错误信息,因为只有 $loginUser[0]

您的数组在另一个数组中。您可以使用以下代码行解决此问题:

$loginUser = current($loginUser);

此外,在使用 var_dump 时,我总是觉得使用 <pre /> 标签很容易。这使您更容易看到数组是如何构建的。

示例:

echo "<pre>";
var_dump($loginUser);
echo "</pre>";
exit;