Gå til innhold

Behøver hjelp til arrays!


Anbefalte innlegg

Behøver noe hjelp til å hente ut data fra osTicket API, som da er et ticketsystem.

 

Return blir presentert på følgende måte (utdrag fra var_dump):

 

array(1) {
 [0]=>
 object(stdClass)#2 (2) {
   ["question"]=>
   object(stdClass)#3 (4) {
     ["id"]=>
     int(25)
     ["created"]=>
     string(25) "2011-01-05T01:19:43+01:00"
     ["name"]=>
     string(4) "test"
     ["message"]=>
     string(4) "qasd"
   }
   ["answers"]=>
   array(1) {
     [0]=>
     object(stdClass)#4 (4) {
       ["id"]=>
       int(25)
       ["created"]=>
       string(25) "2011-01-05T01:25:06+01:00"
       ["name"]=>
       string(17) "Andreas Haakonsen"
       ["message"]=>
       string(3) "ler"
     }
   }
 }
}

 

En ticket kan ha flere svar.

 

Her er jeg meget usikker på hvordan jeg skal gå frem for å hente ut data på korrekt måte, og hvordan få presentet på en webside. Det ble veldig mange arrays og variabler :)

 

Er det noen der ute som kan hjelpe meg med en enkel kode her?

Lenke til kommentar
Videoannonse
Annonse

Er det noen der ute som kan hjelpe meg med en enkel kode her?

 

Jeg får ikke testet dette nå, men følgende kode tror jeg skal fungere.. $return inneholder resultatet du postet i kodesnutten i første post.

 

$return = "resultat fra api request";

foreach($return as $ticket) {
$asking_user = $ticket->question->name;
$question = $ticket->question->message;

echo "<h1>". $question ."</h1>";
echo "<p>Spurt av: " . $asking_user . "</p>";

echo "<h2>Svar:</h2>";

$answers = $ticket->answers;
foreach($answers as $answer) {
	$name = $answer->name;
	$message = $answer->message;

	echo "<p>" . $name . ": " . $message . "</p>";
}
}

 

Dette er en veldig nedstrippet versjon av hva jeg selv ville ha gjort. Selv ville jeg ha laget en php klasse som du bruker som en "wrapper" av APIen. Jeg starter som regel med dette da det sparer meg mye tid under utviklingen av prosjektet.

 

Jeg er usikker på om du bare kan klippe/lime dette da jeg ikke har fått testet det, men håper det hjelper deg med å se helhetsbildet =)

 

Array aksesseres på denne måten:

$value = $array['key'];

eller itereres gjennom foreach. (hvis nøkkelen er nummer).

 

StdClass aksesseres på denne måten:

$value = $object->key

 

Lykke til videre :D

Endret av emilkje
Lenke til kommentar

Takk skal du ha emilkje! Det fungerte utmerket :-) Nå som jeg ser på koden din så ser jeg jo logikken i returen fra APIet, noe som er vel og bra. Skal se om jeg ikke får gjort som du sier, laget en wrapper klasse på dette.

Lenke til kommentar

Hyggelig å kunne hjelpe! :thumbup:

 

Ja det som er så fint med wrappere er at du kan abstraktere APIen slik at den kan brukes mye enklere.

 

Si at class TicketEngine er wrapperen du har skrevet. Her er et eksempel på hvordan den kan anvendes:

$te = new TicketEngine();
$tickets = $te->getAllTickets();

//loope gjennom alle tickets og vise dem som i tidligere eksempel

 

eller hvis du ønsker å vise kun én ticket ved hjelp av ticketID:

$te = new TicketEngine();
$ticket = $te->getTicket(ticketID);

//Vise dataen relatert til gjeldende ticket

 

eller kanskje du ønsker tickets fra en bestemt bruker:

$te = new TicketEngine();
$tickets = $te->getTicketsFromUser(userID);

//Vise resulterende tickets

 

Vi ser med dette at så lenge man har en wrapper så blir det mye enklere å forholde seg til APIen. Hvis prosjektet skal skaleres opp så setter man veldig stor pris på abstraksjon (snakker av erfaring). Ingenting er verre enn å sjonglere med et større antall rå forespørsler mot api serveren, for da mister man fort oversikten.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...