我知道这是我的语法,但找不到问题。
我通常使用循环将任何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;
我在这里搞砸了什么?
谢谢你看看。
答案 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()
失败。