多级数组使用php从json文件中获取精确值

时间:2012-06-18 22:08:12

标签: php json

我有htis json文件:

{
    "waluta": "EUR",
    "vat": 1,
    "01_00101": {
        "cena": 130.8,
        "kod": "00101",
        "nazwa": "Span TRICK 1200/1982-ABS",
        "powiazanyZ": "00139"
    },
    "01_00102": {
        "cena": 125.86,
        "kod": "00102",
        "nazwa": "Span TRICK 1200/1864-ABS",
        "powiazanyZ": "00140"
    },
    "02_00122": {
        "cena": 0,
        "kod": "00122",
        "nazwa": "SET to Wicket TRICK 1200 elektrolock RIGHT",
        "powiazanyZ": "00000"
    },
    "02_00123": {
        "cena": 0,
        "kod": "00123",
        "nazwa": "SET to Wicket TRICK 1200 elektrolock LEFT",
        "powiazanyZ": "00000"
    },
    "02_00152": {
        "cena": 0,
        "kod": "00115",
        "nazwa": "Gate ABS 1200/3070 prepared to servomotor ARM 400",
        "powiazanyZ": "00138"
    },
    "02_00138": {
        "cena": 0,
        "kod": "00115",
        "nazwa": "Gate ABS 1200/3070 handle, bolt",
        "powiazanyZ": "00152"
    }
}

在我的PHP代码中,我这样读:

$string = file_get_contents("cennik-en.json");
$cennik_a=json_decode($string,true);

我希望通过“kod”值访问值。这可能吗? 因为按键值,我认为我可以这样做:

$json_a['01_00101'][nazwa];

2 个答案:

答案 0 :(得分:2)

function returnMainKey( $json, $kod) {
    foreach( $json as $key => $value)
        if( is_array( $value))
            if( isset( $value["kod"]) && $value["kod"] == $kod)
                return $key;
    return null;
}

$string = file_get_contents("cennik-en.json");
$cennik_a=json_decode($string,true);
$key = returnMainKey( $cennik_a, "00101");
echo $cennik_a[$key]["nazwa"];

答案 1 :(得分:1)

您应该能够获得“kod”值,如下所示:

$kod = $json_a['01_00101']["kod"];

在上面的示例中,您尝试使用[nazwa]进行访问,因为密钥是字符串,因此应该["nazwa"]