PHP JSON解码成一个只显示第一个字符的数组

时间:2015-11-04 21:39:22

标签: php json session

我正在调用返回以下输出的API:

{"status":"OK","id":"2321","password":"f4f4489dcf95c16a31f9fb4ffff329fc","server":"pptpd"}

以下输出具有 id 值和密码值。

我在 PHP 中对其进行编码以解码输出并将此值存储在 SESSION 中。

$update_mk = new \Core\Helpers\Driver;
$response = $update_mk->addNode($node->getId(),'admin','pass');

$decoded = json_decode($response, TRUE);
// I also tried without the TRUE argument but same result

$_SESSION['node_id'] = $decoded['id'][0];
$_SESSION['mk_password'] = $decoded['password'][0];

echo("node_id value: ");
echo($_SESSION['node_id']);
echo "\n";
echo("mk_password value: ");
echo($_SESSION['mk_password']);

我遇到的问题是,如果我尝试转储该值,它只会显示:

node_id value: 370 mk_password value: f

只显示mk_password中的第一个字符

出了什么问题?

1 个答案:

答案 0 :(得分:3)

这是因为你错误地访问了它。

实际发生的事情是:

您的密码f4f4489dcf95c16a31f9fb4ffff329fc是一个字符数组。

像这样$chars[0] = 'f'; $chars[1] = 4; $chars[2] = f;

并且您只是因为您正在访问f index array的{​​{1}}而获得f

为了使其有效,您需要分配变量值而不是首先访问它index

这是一个可以帮助您理解的小片段。

$json = '{"status":"OK","id":"2321","password":"f4f4489dcf95c16a31f9fb4ffff329fc","server":"pptpd"}';

$json = json_decode($json, TRUE);

echo "Status: ".$json['status'].PHP_EOL;
echo "ID: ".$json['id'].PHP_EOL;
echo "Password: ".$json['password'].PHP_EOL;
echo "Server: ".$json['server'].PHP_EOL;

输出

Status: OK
ID: 2321
Password: f4f4489dcf95c16a31f9fb4ffff329fc
Server: pptpd

选中 Demo