如何使用动态更改的键值访问嵌套的JSON对象

时间:2019-07-13 19:28:07

标签: php json nested-object

我正在尝试将JSON数据放入我的PHP脚本中,问题是这是一个具有动态更改键值的嵌套JSON对象(我已将JSON对象转换为PHP对象):

stdClass Object
(
    [665261] => stdClass Object
        (
            [id] => 665261
            [SpeiseplanName] => Campus Mensa Wismar
            [Datum] => 2019-07-12
            [KstNr] => 462
            [ArtikelText] => ein Brathering ohne Mittelgräte
            [ZusatzStoffe] => 9 Fi Gl
            [ZusatzStoffeText] => mit Süßungsmittel, Fische, Gluten
            [PeStud] => 0.75
            [PeBed] => 1.35
            [PeGast] => 1.75
            [sortierung] => 46
        )

    [665262] => stdClass Object
        (
            [id] => 665262
            [SpeiseplanName] => Campus Mensa Wismar
            [Datum] => 2019-07-12
            [KstNr] => 462
            [ArtikelText] => zwei Bratheringe ohne Mittelgräte
            [ZusatzStoffe] => 9 Fi Gl
            [ZusatzStoffeText] => mit Süßungsmittel, Fische, Gluten
            [PeStud] => 1.25
            [PeBed] => 1.9
            [PeGast] => 2.25
            [sortierung] => 47
        )

    [665263] and so on.

所以,我已经得到了这样的数据:

<p id="desc"><?= htmlReady(_($data[665261]['ArtikelText'])) ?></p>

然后输出如预期的那样“ zwei Bratheringe ohneMittelgräte”。 但是这个数字键665261是动态的,并且每天都会更改。

那么我该如何使用键值访问日期呢?谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您只需要使用foreach loop,就像这样:

假设您的对象名称为$objects

foreach ($objects as $obj) {
    echo '<p id="desc">' . htmlReady(_($obj->ArtikelText)) . '</p>';
}

或者,如果您有一个数组,名称为$arrays

foreach ($arrays as $arr) {
    echo '<p id="desc">' . htmlReady(_($arr['ArtikelText'])) . '</p>';
}

答案 1 :(得分:0)

首先,您需要检查Key是否存在于数组中。如果存在,则需要获取与该键对应的对象。然后,您可以在对象中打印所需的任何变量。

让我们说您的主要对象是$ objects,而您要查找的键是$ key。然后,您可以使用以下代码。


if( isset( $objects->$key ) ) {  
    $innerObject = $objects->$key;
    echo $innerObject->ArtikelText; //prints ein Brathering ohne Mittelgräte
    echo $innerObject->PeStud; // prints 0.75
}