Итерация по многомерному объекту / массиву - PullRequest
1 голос
/ 04 июля 2019

У меня есть некоторые данные из мыла API. Эти данные поступают в следующем формате:

array(2) {
  ["Request"]=>
  object(stdClass)#7 (3) {
    ["AccessKey"]=>
    string(3) "dub"
    ["Timestamp"]=>
    string(19) "2019.07.04 09:06:19"
    ["Conditions"]=>
    object(stdClass)#8 (1) {
      ["Condition"]=>
      object(stdClass)#9 (2) {
        ["Field"]=>
        string(11) "From"
        ["Value"]=>
        string(10) "1562223979"
      }
    }
  }
  ["Products"]=>
  object(stdClass)#10 (1) {
    ["Product"]=>
    array(10) {
      [0]=>
      object(stdClass)#11 (11) {
        ["Ean"]=>
        string(13) "4029759107323"
        ["Type"]=>
        string(9) "DVD"
        ["Title"]=>
        string(58) "Hellraisers"
        ["FSK"]=>
        string(36) "Freigegeben ohne Altersbeschränkung"
        ["Genre"]=>
        string(5) "Sport"
        ["Year"]=>
        string(4) "2015"
        ["Length"]=>
        string(3) "275"
        ["Language"]=>
        string(7) "Deutsch"
        ["Items"]=>
        string(1) "2"
        ["Release"]=>
        string(10) "2049-12-31"
        ["Label"]=>
        string(17) "Edel Germany GmbH"
      }

Я хочу просмотреть эти данные и получить заголовок каждого набора.

Я пробовал цикл foreach, но я получаю некоторые сообщения об ошибках.

foreach ($results as $result) {
    echo "Titel " . $result->Titel;
}

foreach ($results as $result) {
    echo "Titel " . $result['Product']->Titel;
}

Ничего не работает. Я не могу обернуть голову вокруг массивов ...

1 Ответ

0 голосов
/ 04 июля 2019

Когда вы что-то не понимаете, иногда лучше попытаться сделать его маленьким и расти оттуда, начните пытаться напечатать весь ответ, затем свойства products, затем product и затем массив product:

Как добраться до массива продуктов внутри $response

Сначала у вас есть объект $response имеет элементы с объектами внутри, ["Products"] - это тот, который нам нужен, поэтому $response->Products затем внутри ["Products"] есть объект с одним свойством с именем ["Product"] который содержит массив объектов со всеми продуктами, поэтому $response>Products->Product. Поскольку $response->Products->Product - это массив, нам нужно итерировать его, вы повторяете это так:

foreach($response->Products->Product as $product){
 echo $product->Title; // prints the title of every product
}

Не стесняйтесь спрашивать, не понимаете ли вы или это не работает, но по коду, который вы вставили, я считаю, что foreach является правильным.

Как получить доступ к свойству объекта (stdClass Object) члена / элемента массива? [Дубликат]

Рекомендации в формате JSON

Кстати, JSON не "понятен" и "корректен", массив продуктов должен быть на один уровень выше. Внутри "Продукты", а не внутри "Продукт".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...