不知怎的,这个数组不是数组?

时间:2015-09-15 09:35:57

标签: php arrays session-variables

以下代码返回一些令我困惑的结果......

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");
}

返回:

  

注意:未定义的索引:wwwroot / includes / userhandler.php中的firstname   在第124行

     

注意:未定义的索引:wwwroot / includes / userhandler.php中的id   第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 ) ) 
  

注意:未定义的偏移量:wwwroot / includes / userhandler.php中的1   第129行

     

NULL

2 个答案:

答案 0 :(得分:1)

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]); 这会返回您的第二条错误消息,因为只有$loginUser[0]

答案 1 :(得分:0)

您的阵列位于另一个阵列中。您可以使用以下代码行解决此问题:

$loginUser = current($loginUser);

此外,使用var_dump时,我总觉得使用<pre />标签很容易。这使您可以更轻松地查看阵列的构建方式。

示例:

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