在PHP中检索带有句点的关键字名称的json值时,获取未定义的索引



我的JSON文件具有以下结构:

[
{
"n.name": "name1",
"n.section": ["section1"]
},
{
"n.name": "name2",
"n.section": ["section2a", "section2b"]
},

我解析它,没有错误:

$input = file_get_contents(__DIR__ . "/node.json");
$jsonclean = removeBOM($input);
$data = json_decode($jsonclean, true);
echo 'Error code: '. $error; //Error code: 0

我只想回显n.name密钥(例如name1 name2 name3...(的值。然而,使用echo $data['n.name'];产生:

注意:未定义的索引:n.name

根据";注意:未定义变量"注意:未定义索引";,以及";注意:未定义的偏移量";使用PHP,这只是让PHP更安全的一种方式,我的方法在理论上应该有效。然后我尝试:

$value = isset($_POST['n.name']) ? $_POST['n.name'] : '';
$value = !empty($_POST['n.name']) ? $_POST['n.name'] : '';
echo $value;

但它什么也没印。我不确定这是否是正确的调试方式?

您的json是一个项数组,因此当您使用json_decode对其进行解码时,您应该迭代每个项并检索所需的密钥。示例:

$json = '[
{
"n.name": "name1",
"n.section": ["section1"]
},
{
"n.name": "name2",
"n.section": ["section2a", "section2b"]
}]';
$data = json_decode($json, true);
foreach($data as $item) {
echo $item['n.name'] . "<br>";
}

输出:

name1
name2

最新更新