Я вызываю 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
Что не так?
это потому, что вы обращаетесь к нему неправильно.
что происходит на самом деле:
вы пароль f4f4489dcf95c16a31f9fb4ffff329fc
- это массив символов.
что-то вроде этого $chars[0] = 'f'; $chars[1] = 4; $chars[2] = f;
$chars[0] = 'f'; $chars[1] = 4; $chars[2] = f;
и вы получаете f
только потому, что вы получаете доступ к первому index
array
который равен 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
Проверьте эту демонстрацию