JSON uitlezen in php
Ik ben bezig met een api welke de resultaten als json terug stuurt, deze decode ik netjes en dan heb ik dus een variable data met daarin de json "string".
Nu krijg ik het maar niet voor elkaar specifieke gegevens uit deze resultaten te halen zoals naam, datums etc... Voor jullie vast een makkie:
Voorbeeld foto: https://ibb.co/Sy56hn0
Ik vermoed dat ik door de array moet loopen maar hoe ik precies alle keys kan pakken is me een raadsel daar ik weinig met json werk.
Gewijzigd op 07/08/2019 22:57:22 door - Ariën -
Wil je soms filteren op een bepaalde waarde?
https://www.phphulp.nl/php/forum/topic/simpel-probleempje-met-een-while-loop-en-include/103000/
Waarom zou het nu anders zijn.
Enniehoe, hier voorbeelden :
https://www.tutorialrepublic.com/codelab.php?topic=php&file=display-each-key-value-of-json-object
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<table class="table table-striped">
<thead>
<tr>
<th>Wed ID</th>
<th>Aanvang</th>
<th>Status</th>
<th>Speler 1</th>
<th>Speler 2</th>
<th>Winnaar</th>
</tr>
</thead>
<tbody>
<?php
$readjson = file_get_contents('feed-url') ;
//Decode JSON
$data = json_decode($readjson, true);
//Print data
//print_r($data);
foreach ($data["sport_events"] as $status)
{
echo '<tr>
<td>'.$status[id].'</td>
<td>'.date('Y-m-d h:i:s', strtotime($status[scheduled])).'</td>
<td>'.$status[status].'</td>
<td>'.$status[speler 1 moet hier komen].'</td>
<td>'.$status[speler 2 moet hier komen].'</td>
</tr>';
}
?>
<thead>
<tr>
<th>Wed ID</th>
<th>Aanvang</th>
<th>Status</th>
<th>Speler 1</th>
<th>Speler 2</th>
<th>Winnaar</th>
</tr>
</thead>
<tbody>
<?php
$readjson = file_get_contents('feed-url') ;
//Decode JSON
$data = json_decode($readjson, true);
//Print data
//print_r($data);
foreach ($data["sport_events"] as $status)
{
echo '<tr>
<td>'.$status[id].'</td>
<td>'.date('Y-m-d h:i:s', strtotime($status[scheduled])).'</td>
<td>'.$status[status].'</td>
<td>'.$status[speler 1 moet hier komen].'</td>
<td>'.$status[speler 2 moet hier komen].'</td>
</tr>';
}
?>
Nu wil ik dus de "competitors" array? aanspreken en speler 1 en speler 2 ophalen en in mijn tabel weergeven maar hier gaat het helaas mis, ik dacht iets van:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
foreach ($data["sport_events"][$data["competitors"]] as $spelers)
{
$spelers[players]->name
}
?>
foreach ($data["sport_events"][$data["competitors"]] as $spelers)
{
$spelers[players]->name
}
?>
Ik wil inderdaad bepaalde data filteren uit de json feed die ik ontvang en Adoptive een simpele array is ook geen probleem maar dit lijkt een array in een array in combinatie met json gaat dit voor mijn kennis te ver vandaar dat ik hulp vraag aan de meer ervaren programmeurs.
Gewijzigd op 07/08/2019 22:56:50 door - Ariën -
Het lijkt mij ook belangrijk dat je dit als losstaande problemen leert zien. Je had je oorspronkelijke vraag ook kunnen beginnen met de screenshot en de vraag "ik heb deze aangeleverde arraystructuur en ik moet hier data uit peuteren". het ophalen en uitlezen van de JSON doet hierbij niet terzake.
Het is vrij simpel. Het helpt je wel een hoop om je te bedienen van een goede naamgeving, dit bevordert de leesbaarheid enorm:
Code (php)
Crux is hier dat je aliassen kunt introduceren als referentie voor de subarrays. Zodra je dit meer in de vingers hebt worden arrays een koud kunstje.
Er valt ook iets te zeggen voor het eerst bouwen van een vereenvoudigde datastructuur (wederom een genest array) met de informatie die je wenst te gebruiken, en dan begint met het bouwen van HTML-tabellen. Het voordeel hiervan is weer het opdelen van verschillende taken (het uitlezen van de relevante data, het genereren van een tabel). Deze data zou je bijvoorbeeld op een gegeven moment aan een template kunnen voeden, en dit kun je dan direct doen omdat je alle logica al uit het deel waar je HTML genereert hebt gedrukt. Wederom, deel dingen op in logische, stapsgewijze, taken.
Jouw code werkt en bedankt voor de tips hoe ik dit beter kan doen.
Mvg Furio