variabelen maken van een reeks gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Louis Deconinck

Louis Deconinck

14/12/2013 21:34:23
Quote Anchor link
Ik heb volgende gegevens in de variable $r:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
{"champions":[{"id":266,"name":"Aatrox","active":true,"attackRank":8,"defenseRank":4,"magicRank":3,"difficultyRank":6,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true},
{"id":103,"name":"Ahri","active":true,"attackRank":3,"defenseRank":4,"magicRank":8,"difficultyRank":8,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true},
{"id":84,"name":"Akali","active":true,"attackRank":5,"defenseRank":3,"magicRank":8,"difficultyRank":6,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true}]}


Hoe kan ik hier nu bijvoorbeeld de 'attackRank' van 'Aatrox' in een variable plaatsen?

P.S. Dit komt van de league of legends api
Gewijzigd op 14/12/2013 21:35:17 door Louis Deconinck
 
PHP hulp

PHP hulp

22/11/2024 04:57:04
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/12/2013 23:51:32
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// $a heeft de json in zich
$a = '{"champions":[{"id":266,"name":"Aatrox","active":true,"attackRank":8,"defenseRank":4,"magicRank":3,"difficultyRank":6,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true},
{"id":103,"name":"Ahri","active":true,"attackRank":3,"defenseRank":4,"magicRank":8,"difficultyRank":8,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true},
{"id":84,"name":"Akali","active":true,"attackRank":5,"defenseRank":3,"magicRank":8,"difficultyRank":6,"botEnabled":false,"freeToPlay":false,"botMmEnabled":false,"rankedPlayEnabled":true}]}'
;

// zet de json om naar een PHP object
$obj = json_decode($a);

// dump het complete object op het scherm om te lezen hoe het is opgebouwd
echo '<pre>';
print_r($obj);
echo '</pre>';

//Hoe kan ik hier nu bijvoorbeeld de 'attackRank' van 'Aatrox' in een variable plaatsen?

// loop door de champions array

foreach($obj->champions as $champion)
{

    // laat van ieder object in de champions array zien wie welke attackRank heeft
    echo $champion->name . ' heeft een attackRank van ' .$champion->attackRank . '<br>';
}


?>
 
Louis Deconinck

Louis Deconinck

15/12/2013 10:02:41
Quote Anchor link
Bedankt, dat werkt inderdaad, als ik nu bijvoorbeeld alleen de attackrank van Atrox wil tonen, dan gebruik ik dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$attackRank
= $a['champions'][0]['attackRank'];
?>


Maar dan krijg ik deze error: Fatal error: Cannot use string offset as an array in ..., hoe kan ik dit oplossen?

-EDIT-
Ik heb het probleem gevonden er werden namelijk objects en arrays door elkaar gebruikt, dit was de oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$ar
= $obj->champions[0]->attackRank;
?>
Gewijzigd op 15/12/2013 10:16:48 door Louis Deconinck
 
Erwin H

Erwin H

15/12/2013 10:13:19
Quote Anchor link
Check de documentatie van json_decode (altijd een goed idee om daar eerst te kijken).
En dan vooral de tweede (optionele) parameter:
Quote:
assoc

When TRUE, returned objects will be converted into associative arrays.

Als je geen waarde meegeeft dan zal json_decode de json string omzetten in een object. Dat is wat Frank heeft gedaan en dan zal je de properties dus in object notatie moeten aanroepen (wat Frank ook heeft gedaan). Jij probeert het nu als een array aan te roepen. Dat kan alleen als je json_decode het dus naar een array laat omzetten. Daarvoor moet je dus de tweede parameter op true zetten.
 
Louis Deconinck

Louis Deconinck

15/12/2013 12:47:49
Quote Anchor link
Ik heb die parameter op true gezet, maar nog steeds werkt eht niet, dit is mijn code, wat doe ik fout?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$obj1
= json_decode('http://ddragon.leagueoflegends.com/cdn/3.15.5/data/en_US/champion/Aatrox.json', true);

$championname = $obj1[data][aatrox][name];
echo $championname;
?>
 
Erwin H

Erwin H

15/12/2013 12:52:08
Quote Anchor link
1) Je voert nu een niet json string in in de json_decode functie. Wat dacht je, die functie gaat zelf wel even dat bestand ophalen?
2) array keys zijn strings, daar horen dus quotes omheen
 
Louis Deconinck

Louis Deconinck

15/12/2013 13:02:35
Quote Anchor link
Dus hoe zou ik 1) kunnen oplossen?
 
Bart V B

Bart V B

15/12/2013 13:38:39
Quote Anchor link
door er eerst een string van te maken. :P
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// $a heeft de json in zich
$a = file_get_contents('http://ddragon.leagueoflegends.com/cdn/3.15.5/data/en_US/champion/Aatrox.json');

// zet de json om naar een PHP object
$obj = json_decode($a, true);

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.