获取php中已知密钥的值失败

时间:2013-09-24 16:23:15

标签: php json

我知道这是我的语法,但找不到问题。

我通常使用循环将任何json键转换为如下变量:

已发送JSON: [{\"name\":\"dolly\",\"page\":\"A4\"}]

$object = json_decode(stripslashes($_POST['myData']));

foreach ($object[0] as $key => $value)
{   
    $$key = preg_replace('/--+/',' ',$value);   
}

所以现在,例如,我有$ page =“A4”。工作正常。

现在,我不想像那样循环,而只想访问“页面”键(我知道每次都会在那里),并忽略其他任何内容。

我认为这会做到这一点,但它会因“不能使用stdClass类型的对象作为数组”而失败:

$object = json_decode(stripslashes($_POST['myData']));

$page = $object[0]['page'];

这不会出错,但不会返回任何内容:

$object = json_decode($_POST['myData']);

$p = $object[0]->page;

同样

$p = $object->page;

我在这里搞砸了什么?

谢谢你看看。

2 个答案:

答案 0 :(得分:2)

这似乎对我有用吗?

$a='[{\"name\":\"dolly\",\"page\":\"A4\"}]';
$o=json_decode(stripslashes($a));
var_dump($o[0]->page);

string(2)“A4”

这有帮助吗?

答案 1 :(得分:1)

您需要结合您的方法; - )

$object = json_decode(stripslashes($_POST['myData'])); // note the stripslashes() here!
$p = $object[0]->page;

由于编码的对象是一个数组,您需要获取第一个元素,然后获取对象属性,就像在第二个代码片段中一样。您只是忘记应用stripslashes()以便json_decode()失败。