Konwersja stdClass Object na Array jeśli obiekt jest jedną z wartości

0

Witam,
Próbuję zmienić stdClass Object na array, z pierwszym obiektem się to udało natomiast jeśli object jest jedną z wartości array to komplikuje sprawę. Problematyka polega na tym, że pobieram parametry dotyczące danej kategorii Allegro. Następnie wynik dekoduję z json by móc otrzymać pierwsze wartości, a następnie jak natrafiam na stdClass Object używam funkcji get_object_vars(). Kłopot jest wtedy gdy próbuję wykonać kolejną pętlę foreach i w niej ponownie obiekt zmienić na array. Próbowałam zastosować instrukcję warunkową by sprawdzać czy dana wartość jest obiektem i wtedy ja zmienić na array lecz również nic to nie dało.
Kod poniżej:
public function parametersCategoryAllegro()
{
$parametersCategoryAllegro = "https://api.allegro.pl.allegrosandbox.pl/sale/categories/89012/parameters";
$parametersCategory = $this->api->getParameters($parametersCategoryAllegro);
$parametersCategory = json_decode($parametersCategory);
echo "</br>Parametry kategorii:</br>";

    foreach($parametersCategory as $parametersCat)
    {
        foreach($parametersCat as $catParametersValue)
        {
            $arrayParameters = get_object_vars($catParametersValue);
            print_r("Parameter id: " . $arrayParameters['id'] . " =====> Parametr name: " . $arrayParameters['name']);
            echo "</br>";
            print_r($arrayParameters);
            echo "</br>";

            // foreach($catParametersValue as $parameterValue)
            // {
            //     print_r($parameterValue);
            //     echo "</br>";
                // $arrayParameterValue = get_object_vars($parameterValue);

                // print_r($arrayParameterValue);
                //     echo "</br>";
                // }
                // $arrayParameters = get_object_vars($parameterValue);
                // print_r($arrayParameters);
                // echo "</br>";
            // }
        }
    }
}

Poniżej jest fragment odpowiedzi serwera z danymi na których operuję:
Parameter id: 11323 =====> Parametr name: Stan
Array ( [id] => 11323 [name] => Stan [type] => dictionary [required] => 1 [requiredForProduct] => [unit] => [options] => stdClass Object ( [variantsAllowed] => [variantsEqual] => 1 [ambiguousValueId] => [dependsOnParameterId] => [requiredDependsOnValueIds] => [displayDependsOnValueIds] => [describesProduct] => [customValuesEnabled] => ) [dictionary] => Array ( [0] => stdClass Object ( [id] => 11323_1 [value] => Nowy [dependsOnValueIds] => Array ( ) ) [1] => stdClass Object ( [id] => 11323_2 [value] => Używany [dependsOnValueIds] => Array ( ) ) [2] => stdClass Object ( [id] => 11323_246514 [value] => Nowy z defektem [dependsOnValueIds] => Array ( ) ) ) [restrictions] => stdClass Object ( [multipleChoices] => ) )

Parameter id: 224017 =====> Parametr name: Kod producenta
Array ( [id] => 224017 [name] => Kod producenta [type] => string [required] => [requiredForProduct] => [unit] => [options] => stdClass Object ( [variantsAllowed] => [variantsEqual] => [ambiguousValueId] => [dependsOnParameterId] => [requiredDependsOnValueIds] => [displayDependsOnValueIds] => [describesProduct] => 1 [customValuesEnabled] => ) [restrictions] => stdClass Object ( [minLength] => 2 [maxLength] => 50 [allowedNumberOfValues] => 1 ) )
Dziękuję za wszelką pomoc

1

W PHP obiekty z publicznymi polami castowane na arraya zawierają te same pola. Zresztą json_encode potrafi zwrócić tablice.

https://www.php.net/manual/en/function.json-decode.php
http://sandbox.onlinephpfunctions.com/code/ed4f716e04461b3eef772eb00890c97502820e71

A po obiekcie std można normalnie iterować...

<?php

class Foo {
    public $bar = 123;
}

foreach(new Foo() as $property => $value) {
    echo $property;
}

A dla purystów że stdClass to co innego niż własna klasa

<?php

$arr = ['bar' => 1, 'foo' => 2];
$instance = (object) $arr;

foreach($instance as $property => $value) {
    echo $property . PHP_EOL;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1