jak poruszać się po tablicy obiektów stdObject ?

jak poruszać się po tablicy obiektów stdObject ?
0

Witam,
poprzedni temat dotyczy czegoś innego, więc proszę nie zamykać tego.

Bawiąc się otomoto i pobierając kategorie Allegro mam problem z poruszaniem się po tablicy obiektów stdObject. Oto kawałek tablicy wyświetlany dzięki print_r():

Kopiuj
Array
(
    [0] => stdClass Object
        (
            [id] => 4079
            [name] => Inne pojazdy i Ĺodzie
            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 18500
                            [name] => Buggy
                            [children] => Array
                                (
                                )

                        )

                    [1] => stdClass Object
                        (
                            [id] => 18501
                            [name] => Gokarty
                            [children] => Array
                                (
                                )

                        )

                    [2] => stdClass Object
                        (
                            [id] => 4080
                            [name] => Ĺodzie
                            [children] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [id] => 8727
                                            [name] => Jachty
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [id] => 18507
                                            [name] => Katamarany
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [2] => stdClass Object
                                        (
                                            [id] => 4084
                                            [name] => MotorĂłwki
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [3] => stdClass Object
                                        (
                                            [id] => 18508
                                            [name] => WiosĹowe
                                            [children] => Array
                                                (
                                                )

                                        )

Żeby pobrać pierwsze dane to wystarczy zrobić:

Kopiuj
foreach($allegroCat as $id => $ele)
{
     echo $allegroCat[$id]->{'id'}." - ".$allegroCar[$id]->{'name'};
}

Problem pojawia się gdy chcę pobrać listę "dzieci" jednego z wyników. Próbowałem zrobić tak:

Kopiuj
$currentCat = $allegroCat[2]->{'children'};

I to jeszcze poprawnie działało, ale kolejny etap np.:

Kopiuj
$currentCat = $currentCat[kolejne_id]->{'children'};

Nie daje żadnego rezultatu. Nie mam informacji o błędzie, oraz po próbie wypisania

Kopiuj
print_r($currentCat);

jest pusty ekran. Oczywiście pod kolejne_id podaję wartość, która ma na pewno potomków.

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
0

echo $allegroCat[0]->children[2]->children[3]->name; wyświetli Ci nazwę Wiosłowe. Przyjrzyj się zapisowi i powinieneś ogarnąć.


0

Czyli nie muszę robić tego cholernego {''}. Sprawdzę i odpiszę.

Znalazłem też przerabianie stdClass to array, ale to zawsze wydłuża czas działania.

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
0

Ale w Twoim przypadku nie ma tu żadnego problemu.

Zmienna jest obiektem? No to dostajesz się do właściwości tak: $zmienna->children.
Zmienna jest tablicą? No to $zmienna[0].


0

Wszystko ładnie działa. Dzięki

0

No tak, ale gdzieś kiedyś wyczytałem że przy stdObject trzeba robić nawiasy {} i to tworzyło problemy.

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
0

Pierwsze widzę, pierwsze słyszę. stdObject to obiekt jak każdy inny. Parser przepuszcza taką składnię w ogóle?


0

Przepuszcza i nawet działa. Też mnie dziwiło czemu tak muszę odnosić się w stdClass.

Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.