JSON ekspert

Tags:    json php

Jeg sidder i en meget træls sitation. Jeg skal have udskrevet et array, som JSON, men problemet er at når jeg forsøger at gøre det, tilføjer den en automatisk index afhængig af hvor mange arrays jeg har..

I mit tilfælde vil jeg gerne have fjernet "0:"{

Min kode er således:

Udskrevet JSON:

Fold kodeboks ind/udKode 


Fold kodeboks ind/udPHP kode 


Jeg har sat forsøgt med array_values, men den fjerner alle keys. så jeg fx ikke kan bruge nvd3



Indlæg senest redigeret d. 21.09.2015 20:20 af Bruger #17509
4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 14 karma
Sorter efter stemmer Sorter efter dato
Årsagen til du får dit "0" er fordi du har dette stykke af data:
Fold kodeboks ind/udPHP kode 

Lad os erstatte værdien med symbolet X for diskussionens skyld. Så har du:
Fold kodeboks ind/udPHP kode 

Måden du får fat på data på er med nøglen. Men du har ikke sat nogen nøgle, så PHP beslutter at bruge nøglen '0'. Det virker på samme måde som du havde skrevet:
Fold kodeboks ind/udPHP kode 

Hvis du havde haft to elementer i dit array:
Fold kodeboks ind/udPHP kode 

ville PHP også lave en nøgle for den anden:
Fold kodeboks ind/udPHP kode 


Hvordan løser du det så? Du kan enten give den manuelt en nøgle:
Fold kodeboks ind/udPHP kode 

hvor X selvfølgelig er dit data og ikke tegnet 'X'. Men som du kan se fra indrykningen er problemet nok at du har et array for meget. Du vil sådan set bare have X. Hvis vi fjerner det yderste array bliver hele resultatet:
Fold kodeboks ind/udPHP kode 

Men nu er problemet at du har to 'monthSales', den går heller ikke. Hvis meningen er at det skal ligne det output du har skrevet har du enten en monthSales for meget, eller også skulle den have heddet "interpolated".



Indlæg senest redigeret d. 21.09.2015 21:56 af Bruger #14645
Så er du nødt til selv at give den en nøgle. Hvis jeg ændrer på indrykningen af dit PHP:

Fold kodeboks ind/udPHP kode 


Samt på dit output:
Fold kodeboks ind/udJScript kode 


Kan ses at dit yderste array er en associativ array som mapper "string" keys til værdier. Problemet er at du ikke har givet nogen explicit nøgle til det andet top-level element, så PHP begynder at lave bruge heltalsindeksering. Se linje 2 og 3 versus 10 og 11. Der er ligesom hvis du havde skrevet:
Fold kodeboks ind/udPHP kode 

Så ville PHP selv finde en nøgle (0), til value2.




Indlæg senest redigeret d. 21.09.2015 20:41 af Bruger #14645
Jeg prøver at genskabe dette json

Fold kodeboks ind/udKode 


hvorfor det, at den ikke kommer med "0": er der ingen måde jeg kan undgå det på?

Og hvis jeg skal bruge index, hvordan kan jeg så fremkalde den i mit javascript?

Jeg henter den på denne måde: data.nvd3.monthSales



Tusind tak for din hjælp, jeg fik det gjort muligt at ændre det til data.nvd3[0].monthSales

Tak for din utrolige gode hjælp :-)



t