PHP JSON декодировать в массив, показывая только первый символ

1

Я вызываю 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
    $ _SESSION ['node_id'] = $ decoded ['id'] [0]; просто удалите [0], и вы должны быть готовы к работе, потому что с 0 это займет только первый символ
  • 0
    спасибо @Fabio, нуб вопрос.
Теги:
session

1 ответ

3
Лучший ответ

это потому, что вы обращаетесь к нему неправильно.

что происходит на самом деле:

вы пароль 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

Проверьте эту демонстрацию

  • 1
    Немного больше объяснения было бы здорово для хорошего ответа, это похоже на комментарий
  • 0
    вау, извините, что потратил на это время. Спасибо :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню