json uitlezen in PHP werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

08/02/2018 20:37:47
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
{
    "profiles": {
        "0": {
            "profiletoken": "73E327BEA-B550-4F73-831F-",
            "age": {
                "description": "Leeftijd",
                "answer_type": "numeric_value",
                "answerdata": "28"
            },
            "nickname": {
                "description": "Profielnaam",
                "answer_type": "text",
                "answerdata": "SlamDunk-1981"
            },
        "1":
            "nickname": {
                "description": "Profielnaam",
                "answer_type": "text",
                "answerdata": "stefann2"
            }
}


De data is gevuld met dit soort json data:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$characters = json_decode($data,true); // decode the JSON feed
var_dump($characters);
foreach ($characters as $character) {
//    echo print_r($character);
    echo $character['profiles'][1];
}


Maar de loop zegt :

"e: Undefined index: profiles in"

Ik snap er niks meer van
 
PHP hulp

PHP hulp

26/12/2024 07:06:26
 
- Ariën  -
Beheerder

- Ariën -

08/02/2018 20:41:36
Quote Anchor link
En wat zegt de var_dump dan?
 
Jeroen Jansen

Jeroen Jansen

09/02/2018 09:11:54
Quote Anchor link
Volgens mij mis je een s bij de echo. $character in plaats van $characters
 
- Ariën  -
Beheerder

- Ariën -

09/02/2018 09:18:59
Quote Anchor link
@Jeroen: Nee, want in een foreach wil je de array doorlopen. En voor elke iteratie wordt dan $character gebruikt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/02/2018 11:19:06
Quote Anchor link
Een beetje opmerkelijk is dat de json enkel uit objecten bestaat en dat er geen array's in voorkomen. Aangezien het eerste element key/id "0" heeft denk ik ook niet dat dit het database id is. Waarschijnlijk kun je in PHP de array wel gewoon doorlopen met een foreach. Echter begint de JSON niet met een "numerieke array" maar met een object "profiles". Je zou de foreach met deze kunnen "starten".

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$data
= json_decode($data,true); // decode the JSON feed

foreach($data['profiles'] as $profiles) {
    echo $profiles['nickname']['answerdata'];
}

?>


Toevoeging op 09/02/2018 11:25:34:

Edit:

Aangezien de data niet erg consistent lijkt zou ik elk element in de array tevens eerst controleren met isset() of deze wel bestaat en een andere waarde dan NULL heeft.
 



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.