我知道这是我的语法,但找不到问题。
我通常使用循环将任何 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;
我在这里搞砸了什么?
感谢您的观看。
这对我来说似乎很好用?
$a='[{'"name'":'"dolly'",'"page'":'"A4'"}]';
$o=json_decode(stripslashes($a));
var_dump($o[0]->page);
字符串(2) "A4"
这有帮助吗?
你需要结合你的方法;-)
$object = json_decode(stripslashes($_POST['myData'])); // note the stripslashes() here!
$p = $object[0]->page;
由于编码的对象是一个数组,因此您确实需要获取第一个元素,然后获取对象属性,就像在第二段代码中所做的那样。您只是忘记应用stripslashes()
,因此json_decode()
失败。