2

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

我通常使用循环将任何 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;

我在这里搞砸什么?

谢谢参观。

4

2 回答 2

2

这似乎对我有用吗?

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

字符串(2)“A4”

这有帮助吗?

于 2013-09-24T16:27:57.283 回答
1

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

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

As the object encoded is an array, you do need to get the first element and then the object property as you did in your second snippet of code. You just forgot to apply stripslashes() so that json_decode() failed.

于 2013-09-24T16:36:07.260 回答