我正在调用返回以下输出的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中的第一个字符
出了什么问题?
答案 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