好的,所以我对PHP很新,但它就像JS一样,所以我很快就把它拿起来了。
我前几天遇到的一个问题是从JSON文件中获取值。
我的JSON文件是30,000行,但这里的内容基本上是这样的:
{
"congress": {
"Brown Sherrod": [{
"birthday": "1952-11-09"
}, {
"gender": "M"
}, {
"type": "sen"
}, {
"state": "OH"
}, {
"party": "Democrat"
}],
...
无论如何,它继续像另外29,000 +线。获取JSON文件内容的代码是:
$data = json_decode(file_get_contents('path/to/file/convertcsv.json'), true);
它返回一个这样的数组:
Array (
[0] => Array (
[birthday] => 1952-11-09
)
[1] => Array (
[gender] => M
)
[2] => Array (
[type] => sen
)
[3] => Array (
[state] => OH
)
[4] => Array (
[party] => Democrat
)
)
我遇到的问题是,在不使用implode()
的情况下,我无法获得['生日']的价值。
这有效:$state = implode($data['congress'][$nameInput][3]);
,但不是:$state = $data['congress'][$nameInput][3];
有原因吗?我已经阅读了implode()
上的文档(使用字符串连接数组元素)以及我从SO和PHP文档中收集的内容,这是您获取值的方式,但为什么?为了获得值,必须将数组转换为字符串是没有意义的。在JavaScript中从数组中获取值(甚至是键值),您只需使用数组的['键']或[index],它就会为您提供值
我觉得我要么在某些重要的事情(不是不太可能)上搞错,要么PHP只是奇怪 - 可能是前者。所以,重申一下我的问题(因为我可以絮絮叨叨)我是不是太复杂了,或者PHP太奇怪了(如果有的话,是否有原因)?
答案 0 :(得分:3)
请尝试以下方法: -
$state = $data['congress'][$nameInput][3]['state']