json uitlezen in PHP werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Production Engineer

Supermicro® (NASDAQ: SMCI), the leading innovator in high-performance, high-efficiency server technology, is a premier provider of advanced server Building Block Solutions® for Data Center, Cloud Computing, Enterprise IT, Hadoop/Big Data, HPC and Embedded Systems worldwide. Supermicro is committed to protecting the environment through its “We Keep IT Green®” initiative and provides customers with the most energy-efficient, environmentally-friendly solutions available on the market. Supermicro Computer B.V. is seeking a: Production Engineer Who is responsible for the assembly and building of Supermicro product that meet products quality requirements and shipment deadlines. This position will be located in the HMEA headquarters in 's-Hertogenbosch,

Bekijk vacature »

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

17/12/2018 21:45:58
 
- 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.