在 PHP 中获取已知键的值失败


getting a value of a known key in php failing

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

我通常使用循环将任何 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()失败。