我的JSON数据变量是空的

时间:2015-02-10 00:53:07

标签: php json

我已经输入了JSON数据,我已手动设置以进行调试。我正在尝试将数据存储到自己的变量中(以便以后的数据库存储),但是它们是空的。

我尝试过两种不同的东西,但是当echo将它们移出时,它仍然显示为空。有没有更好的方法来实现这个,并且实际上将数据存储在所需的变量中?

$json = '[{
    "q1":"a",
    "q2":"d"
    }]';

$questions = json_decode($json, true);

$q1 = $questions->q1; //first method of getting the data
$q2 = $questions['q2']; //second attempted method

echo "q1: ".$q1;
echo "q2: ".$q2;

1 个答案:

答案 0 :(得分:2)

摆脱json字符串周围的方括号:

$json = '{
  "q1":"a",
  "q2":"d"
}';

$questions = json_decode($json, true);

$q1 = $questions['q1']; //first method of getting the data
$q2 = $questions['q2']; //second attempted method

echo "q1: ".$q1;
echo "q2: ".$q2;

编辑:由于您计划通过AJAX发送信息,请说使用类似

的内容
JSON.stringify($('#formId').serializeArray());

根据您的原始帖子,您最终可能会得到一个JSON数组。在这种情况下,您可能想要执行for循环,或直接访问问题:

$json = '[{
  "q1":"a",
  "q2":"d"
}]';

$questions = json_decode($json, true);

foreach($questions as $question) {
  $q1 = $question['q1']; //first method of getting the data
  $q2 = $question['q2']; //second attempted method
}

// This would also work:
echo $questions[0]['q1'];