我正在尝试从解码后的JSon字符串中获取一些信息到数组中。
我有这段代码:
$json_d='{ // This is just an example, I normally get this from a request...
"iklive.com":{"status":"regthroughothers","classkey":"domcno"}
}';
$json_a=json_decode($json_d,true);
$full_domain = $domain.$tlds; // $domain = 'iklive' ; $tlds = '.com'
echo $json_a[$full_domain][status];
问题是,我需要获取“iklive.com”的“状态”值,但是当我执行echo $json_a[$full_domain][status];
时它不起作用,但如果我手动执行echo $json_a['iklive.com'][status];
(它的引用就可以了。
我尝试将引号添加到变量但没有成功,我该怎么做?
谢谢大家!
感谢Pekka和jeromegamez,我注意到这个“问题”的HTML部分出现错误,$tlds
变量是“com”而不是“.com” - 抱歉浪费你的时间。我现在心疼。
无论如何,多亏了jeromegamez和Marc B,我发现除非status
是一个常数我需要引用它;)你可以检查jeromegamez回答问题的详细解释和正确的调试。
对不起。
答案 0 :(得分:2)
这对我有用:
<?php
$json_d='{ "iklive.com":{"status":"regthroughothers","classkey":"domcno"} }';
$json_a = json_decode($json_d, true);
if (!is_array($json_a)) {
echo "\$json_d is not a valid JSON array\n";
}
$domain = "iklive";
$tld = ".com";
$full_domain = $domain . $tld;
if (!isset($json_a[$full_domain])) {
echo "{$full_domain} is not set in \$json_a\n";
} else {
echo $json_a[$full_domain]['status']."\n";
}
我做了什么:
json_a[$full_domain][status]
更改为json_a[$full_domain]['status']
- status
周围缺少的引号不会破坏您的脚本,但会引发Notice: Use of undefined constant status - assumed 'status'
$full_domain
$json_a