Hallo,

Iemand een idee hoe ik deze sjon in PHP krijg


{"players":{"c53ec47e-dc10-4908-950c-e7e91f8c938e":{"xp":14411,"profile_id":"c53ec47e-dc10-4908-950c-e7e91f8c938e","lootbox_probability":800,"level":49,"max_mmr":3129,"skill_mean":23.9427664492,"deaths":333,"next_rank_mmr":2400,"rank":11,"max_rank":16,"board_id":"pvp_ranked","skill_stdev":5.1317459682,"kills":112,"last_match_skill_stdev_change":-0.0227403775,"update_time":"2019-09-03T22:02:41.085000+00:00","last_match_mmr_change":-48,"abandons":1,"season":14,"last_match_skill_mean_change":-0.4864542875,"mmr":2394,"previous_rank_mmr":2300,"last_match_result":2,"wins":31,"region":"emea","losses":35,"nickname":"Sneeuwmonster","platform":"uplay","rankInfo":{"image":"https:\/\/i.imgur.com\/f68iB99.png","name":"Silver \u2161"}}}}

Alvast bedankt

Bedankt voor uw reactie, dat heb ik geprobeerd maar blijf als output Array krijgen.
Het is JSON, geen Sjon :p

Het feit dat je 'array' ziet wijst op het feit dat je het niet als array benadert. Wat doe je precies?
Bedankt voor uw reactie, is mij bekend dat het geen sjon is maar json was een typ foutje ;p

<?php

$data = '{"players":{"c53ec47e-dc10-4908-950c-e7e91f8c938e":{"xp":14411,"profile_id":"c53ec47e-dc10-4908-950c-e7e91f8c938e","lootbox_probability":800,"level":49,"max_mmr":3129,"skill_mean":23.9427664492,"deaths":333,"next_rank_mmr":2400,"rank":11,"max_rank":16,"board_id":"pvp_ranked","skill_stdev":5.1317459682,"kills":112,"last_match_skill_stdev_change":-0.0227403775,"update_time":"2019-09-03T22:02:41.085000+00:00","last_match_mmr_change":-48,"abandons":1,"season":14,"last_match_skill_mean_change":-0.4864542875,"mmr":2394,"previous_rank_mmr":2300,"last_match_result":2,"wins":31,"region":"emea","losses":35,"nickname":"Sneeuwmonster","platform":"uplay","rankInfo":{"image":"https:\/\/i.imgur.com\/f68iB99.png","name":"Silver \u2161"}}}}';


$data2 = json_decode($data, true);
echo "Parsing data by using PHP Array <br/>";

print_r($data2);


echo $data2["players"]."<br/>";

echo "<br/><br/> Players names are: <br/>";


foreach ($data2 as $data3) {
echo $data3['players']."<br/>";
}

?>
En als je de hele array dumpt met
<?php
echo '<pre>' . print_r($data2, true) . '</pre>';
?>

wat krijgen we dan te zien?
Output:

Array
(
[players] => Array
(
[c53ec47e-dc10-4908-950c-e7e91f8c938e] => Array
(
[xp] => 14411
[profile_id] => c53ec47e-dc10-4908-950c-e7e91f8c938e
[lootbox_probability] => 800
[level] => 49
[max_mmr] => 3129
[skill_mean] => 23.9427664492
[deaths] => 333
[next_rank_mmr] => 2400
[rank] => 11
[max_rank] => 16
[board_id] => pvp_ranked
[skill_stdev] => 5.1317459682
[kills] => 112
[last_match_skill_stdev_change] => -0.0227403775
[update_time] => 2019-09-03T22:02:41.085000+00:00
[last_match_mmr_change] => -48
[abandons] => 1
[season] => 14
[last_match_skill_mean_change] => -0.4864542875
[mmr] => 2394
[previous_rank_mmr] => 2300
[last_match_result] => 2
[wins] => 31
[region] => emea
[losses] => 35
[nickname] => Sneeuwmonster
[platform] => uplay
[rankInfo] => Array
(
[image] => https://i.imgur.com/f68iB99.png
[name] => Silver â…¡
)

)

)

)

[size=xsmall]Toevoeging op 04/09/2019 08:56:14:[/size]

Ik moet een mogelijkheid hebben om alleen de waarde "c53ec47e-dc10-4908-950c-e7e91f8c938e" uit players te krijgen. (alleen die waarde zonder haakjes of wat dan ook)
zoals je dan kunt zien is de waarde van players ook een array. (players is meervoud ook al heb je er nu maar één).

Je kunt twee dingen doen:
1) een foreach om door alle players heen te lopen.
2) de player er uit pakken door de unique id op te geven.

<?php
foreach($data2['players'] as $player) {
echo $player['nickname'];
// ...
}
?>

of:

<?php
echo $data2['players']['c53ec47e-dc10-4908-950c-e7e91f8c938e']['nickname'];
?>

[size=xsmall]Toevoeging op 04/09/2019 09:05:51:[/size]

Bij rankInfo gaan we nog een level dieper.. probeer het eens :-/
Hartelijk dank, ik geholpen met een goede oplossing!

Reageren