Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z wyłuskaniem "parametrów" w obiekcie
Forum PHP.pl > Forum > PHP
swiezak
Witam.
Na poczatek fragmenty kodu:
Kod
Object ( [value:protected] => stdClass Object ( [GetRolesResult] => stdClass Object ( [ServerID] => 12d4a65a-955f-479d-a8b9-bf70c5f75a2a [Status] => OK [TimeStamp] => 2012-05-23T11:52:06.515322+02:00 [Version] => 2 [Groups] => stdClass Object ( [RoleGroup] => stdClass Object ( [GroupID] => b8395df7-d963-4f46-ad93-506ebafaf960 [Name] => Administrator [Symbol] => ADM [Type] => A ) ) ) )

Object ( [value:protected] => stdClass Object ( [GetRolesResult] => stdClass Object ( [ServerID] => 12d4a65a-955f-479d-a8b9-bf70c5f75a2a [Status] => OK [TimeStamp] => 2012-05-23T11:56:52.745322+02:00 [Version] => 2 [Groups] => stdClass Object ( [RoleGroup] => Array ( [0] => stdClass Object ( [GroupID] => 79971909-26d4-4e92-9ed3-ac606b3a045e [Name] => Redaktor [Symbol] => RED [Type] => A ) [1] => stdClass Object ( [GroupID] => 35707a3c-5210-4766-9f84-cb605a341a57 [Name] => Moderator [Symbol] => MOD [Type] => A ) ) ) ) )


W pierwszym przypadku parametr "name" wyciagam przy uzyciu tej instrukcji: $r->GetRolesResult->Groups->RoleGroup->Name;

W drugim natomiast:
$r->GetRolesResult->Groups->RoleGroup[0]->Name;
oraz
$r->GetRolesResult->Groups->RoleGroup[1]->Name;

W jaki sposob za pomoca jednej instrukcji wyciagac nazwy uzytkownikow (ujednolicic pobieranie struktury)? Zarowno, gdy mamy do czynienia z "tablica", jak i "skalarem"?
Bylbym wdzieczny za pomoc.
bastard13
Atrybut powinien mieć określony typ. Jeżeli raz jest to tablica, a w innym przypadku nie, to jest błąd. Zamień wszystko na tablicę, wtedy w przypadku jednego elementu masz jednoelementową tablicę.
Inna sprawa, że tworzenie takich łańcuszków zależności nie jest zbyt dobrym pomysłem.
swiezak
To jest odpowiedz z php'wego SOAP. Ktos napisal API do aplikacji, udostepnil pewne procedury ktore zwracaja obiekty, a ja teraz siedze i mysle jak obejsc co rusz pojawiajace sie niedogodnosci.
bastard13
Ja bym otoczył, to jakimś obiektem tzn. odpowiedź sopa potraktowałbym jako dane. Łatwiej będzie CI się później na tym pracowało, jeżeli stworzysz sobie obiekt z niezbędnymi Ci metodami.
Natomiast przepisanie tych roli zajęłaby się faktorka tzn. byłby mniej więcej taki kod:
  1. $r->GetRolesResult->Groups->RoleGroup = is_array($r->GetRolesResult->Groups->RoleGroup) ? $r->GetRolesResult->Groups->RoleGroup : array($r->GetRolesResult->Groups->RoleGroup);

I później już masz pewność, że jest to tablica.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.