检索在 PHP 中有一个点的键名的 json 值时获取未定义的索引
Getting undefined index when retrieving json value of key name having a dot within in PHP
我的 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'];
会产生:
Notice: Undefined index: n.name
根据"Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset" using 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
我的 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'];
会产生:
Notice: Undefined index: n.name
根据"Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset" using 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