从PHP JSON数组中获取唯一值(为什么我必须使用implode?)

时间:2014-07-01 06:51:07

标签: php arrays json

好的,所以我对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太奇怪了(如果有的话,是否有原因)?

1 个答案:

答案 0 :(得分:3)

请尝试以下方法: -

$state = $data['congress'][$nameInput][3]['state']