json_decode($ string,true)返回一个'Array'字符串,而不是Array本身

时间:2012-09-20 07:40:43

标签: php json base64 mcrypt

我认为问题是我是base64_encoding json字符串,当我base64_decode字符串并且由于某种原因运行json_decode($string, true)时它只返回'Array'字符串。< / p>

这是我传递要编码的json的地方:

$data = '[{"id":"1","name":"Dave","email":"dave@test.com","password":"1610838743cc90e3e4fdda748282d9b8","isAdmin":"true","timeStamp":"2012-09-18 20:37:38"}]';

Session::set('user', $data, true);

这是我的base64编码/解码代码:

public static function set($key, $value, $encrypt = false) {
    if ($encrypt == false) {
        $_SESSION[$key] = $value;
    } else {
        $_SESSION[$key] = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), $value, MCRYPT_MODE_CBC, md5(md5(SALT2))));
    }
}

public static function get($key, $decrypt = false) {
    if (isset($_SESSION[$key])) {
        if ($decrypt == false) {
            return $_SESSION[$key];
        } else {
            return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), base64_decode($_SESSION[$key]), MCRYPT_MODE_CBC, md5(md5(SALT2))), "\0");
        }
    }
}

然后我在这里调用解码值:

$user = Session::get('user', true);

echo json_decode($user, true);

我的结果是:

Array

我已经研究过不同的mcrypt模式,但是找不到解决方案是不成功的。任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:3)

echo只输出一个字符串。您必须使用print_r()var_dump()来查看数组。

print_r(json_decode($user, true));

或使用

var_dump(json_decode($user, true));

答案 1 :(得分:0)

使用此:

print_r(json_decode($ user,true));