JSON uitlezen in php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

06/08/2019 14:38:38
Quote Anchor link
Beste forumleden,

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 -
 
PHP hulp

PHP hulp

23/12/2024 19:56:27
 
- Ariën  -
Beheerder

- Ariën -

06/08/2019 15:04:40
Quote Anchor link
Wil je soms filteren op een bepaalde waarde?
 
Adoptive Solution

Adoptive Solution

06/08/2019 15:18:04
 
Furio Scripting

Furio Scripting

06/08/2019 15:34:07
Quote Anchor link
Bedankt voor de reacties, de eerste laag lukt nu wel met:

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
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>'
;
        
    


}





?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

06/08/2019 16:30:55
Quote Anchor link
Dit staat helemaal los van JSON. Je werkt immers met een geneste arraystructuur.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
foreach ($data['sport_events'] as $event) {
    // grab season name from $event['season']['name']
    foreach ($event['competitors'] as $competitor) {
        // grab competitor from $competitor['name']
    }
}

?>

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.
 
Furio Scripting

Furio Scripting

07/08/2019 08:38:01
Quote Anchor link
Dankjewel Thomas!

Jouw code werkt en bedankt voor de tips hoe ik dit beter kan doen.

Mvg Furio
 



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.