PHP JSON解析,仅显示三个参数之一

时间:2011-09-16 03:22:16

标签: php html json forms post

我有一个html页面,它将HTTP POST发送到php页面,并嵌入了一个JSON对象作为参数。但是,当我尝试检索参数时,我只能检索“传递”而不能检索其他内容。我错过了在php中解析JSON的一些内容吗?

html POST表单:

<form method="POST" action="......../username_exist.php" >
<input type="hidden" name="param" value='{"username":"user123","pass":"147852369qwerfdsazxcv","funny":"funny"}' />
<input type="submit" value="Click Me to submit" />
</form>

和php页面:

$param = json_decode($_POST['param']);
$username = $param['username'];
$pass = $param['pass'];
$funny = $param['funny'];
echo $pass;
echo $username;
echo $funny;

给出结果:

  

147852369qwerfdsazxcv

3 个答案:

答案 0 :(得分:5)

根据我从PHP Docs读到的内容,在没有 json_decode param的情况下调用assoc 将返回一个对象,因此您需要访问其属性,如{ {1}},$param->pass

干杯!

答案 1 :(得分:2)

这对我当地人有用:

$param = json_decode($_POST['param']);
$username = $param->username;
$pass = $param->pass;
$funny = $param->funny;
echo $pass;
echo $username;
echo $funny;

不同之处在于我使用了->,因为它是一个对象,而不是一个数组。

答案 2 :(得分:2)

Philip是对的,您需要将true作为第二个参数添加到json_decode以获取数组。

$param = json_decode( $_POST['param'], true );

..将json作为关联数组返回,并使其余代码按预期工作。