无法获取json_解码PHP中的数据

无法获取json_解码PHP中的数据,php,Php,我有一个脚本,我试图从解码到数组中的json字符串中获取值。。我似乎无法访问数据 $userData = json_decode($_GET['userData']); echo $_GET['userData']; //<--- This line works fine and show the $_GET value $id = $userData['hottsourceID']; //<-- This line errors $coins = $userData['coin

我有一个脚本,我试图从解码到数组中的json字符串中获取值。。我似乎无法访问数据

$userData = json_decode($_GET['userData']);

echo $_GET['userData']; //<--- This line works fine and show the $_GET value

$id = $userData['hottsourceID']; //<-- This line errors
$coins = $userData['coins'];

echo $id;
echo $coins;
$userData=json_decode($_GET['userData']);

echo$_GET['userData']// 您应该通过第二个参数将其设置为
true
。不带
true
参数
$userData
为对象。因此,您无法使用
$userData['index']
访问它。试一试

$userData = json_decode($_GET['userData'], true);
echo $_GET['userData']; 
$id = $userData['hottsourceID'];
$coins = $userData['coins'];

echo $id;
echo $coins;

如果不使用
true
作为
json_decode()
中的第二个参数,则可以通过
$id=$userData->hottsourceID
$coins=$userData->coins
等方式进行访问。

默认情况下
json_decode
不会创建关联数组,而是创建对象

$data = json_decode('{"foo":"bar"}');

echo $data->foo;
// "bar"
如果希望
json\u decode
使用关联数组,可以将
true
作为第二个参数传递

$data = json_decode('{"foo":"bar"}', true);

echo $data["foo"];
// "bar"

现在您知道了这一点,您可以像这样调整自己的解决方案

$userData = json_decode($_GET["userData"]);

$id = $userData->hottsourceID;
$coins = $userData->coins;

echo $id;
echo $coins;

其他提示

由于您正在解析用户输入,如果
$\u GET[“userData”]
中的JSON无效,您可能希望抛出一个错误<如果解析失败,code>json_decode
将返回
null

function decode($json) {
  $data = json_decode($json);
  if (is_null($data)) throw new Exception("Invalid JSON");
  return $data;
}

try {
  $userData = decode($_GET["userData"]);
  $id = $userData->hottsourceID;
  $coins = $userData->coins;

  echo $id;
  echo $coins;
}
catch (Exception $e) {
  echo $e->getMessage();
}