json_encode och Object/Array

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marcusgarden



Medlem i: 3293 dagar

Status: Offline



#741975
Inlägg Skrivet: 2017-11-13 17:25      Ämne: json_encode och Object/Array Citera

Tja!

Jag kör på trial and error oftast, kan inte allt:/ Nu har jag kommit til en grej som jag inte förstår mer än att jag ser att resultatet är fel eller uteblir:/

Om jag kör json_encode på ett resultat från db så ser det t.ex. ut som

KOD:
1:
Array ( [0] => Array ( [id] => 249 [alder_min] => 3 [alder_max] => 6 [alder_min_text] => 3 mån - [alder_max_text] => 6 mån [namn] => valpklass_6 [namn_utf] => Valpklass ) [1] => Array ( [id] => 1 [alder_min] => 4 [alder_max] => 6 [alder_min_text] => 4 mån - [alder_max_text] => 6 mån [namn] => valpklass_1 [namn_utf] => Valpklass ) [2] => Array ( [id] => 253 [alder_min] => 4 [alder_max] => 7 [alder_min_text] => 4 mån - [alder_max_text] => 7 mån [namn] => valpklass_10 [namn_utf] => Valpklass ) [3] => Array ( [id] => 250 [alder_min] => 5 [alder_max] => 7 [alder_min_text] => 5 mån - [alder_max_text] => 7 mån [namn] => valpklass_7 [namn_utf] => Valpklass ) [4] => Array ( [id] => 248 [alder_min] => 4 [alder_max] => 9 [alder_min_text] => 4 mån - [alder_max_text] => 9 mån [namn] => valpklass_5 [namn_utf] => Valpklass ) [5] => Array ( [id] => 2 [alder...


medan ett annat resultat ser ut som t.ex.

KOD:
1:
Array ( [0] => Klass Object ( [id] => 249 [namn_utf] => Valpklass [alder_min] => 3 [alder_min_text] => 3 m�n - [alder_max] => 6 [alder_max_text] => 6 m�n ) [1] => Klass Object ( [id] => 1 [namn_utf] => Valpklass [alder_min] => 4 [alder_min_text] => 4 m�n - [alder_max] => 6 [alder_max_text] => 6 m�n ) [2] => Klass Object ( [id] => 253 [namn_utf] => Valpklass [alder_min] => 4 [alder_min_text] => 4 m�n - [alder_max] => 7 [alder_max_text] => 7 m�n ) [3] => Klass Object ( [id] => 250 [namn_utf] => Valpklass [alder_min] => 5 [alder_min_text] => 5 m�n - [alder_max] => 7 [alder_max_text] => 7 m�n ) [4] => Klass Object ( [id] => 248 [namn_utf] => Valpklass [alder_min] => 4 [alder_min_text] => 4 m�n - [alder_max] => 9 [alder_max_text] => 9 m�n ) [5] => Klass Object ( [id] => 2 [namn_utf] => Valpklass [alder_min] => 6 [alder_min_text] => 6 m�n - [alder_max] => 9 [alder_max_text] => 9 m�n ) [6] => Klass Object ( [id] => 251 [namn_utf] => Valpklass [alder_min] => 7 [alde...


när jag kör print_r() på resultatet från db...

Jag förstår inte skillnaden på dessa...jag ser att det är skillnad på
KOD:
1:
 
2:
Array ( [0] => Array ...


och
KOD:
1:
 
2:
Array ( [0] => Klass Object (


men inte riktigt varför och hur jag ska fixa det:/

Det översta exemplet skapar ju ett resultat i json_encode men det gör inte det andra exemplet.

Hur fixar jag detta?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4754 dagar
Från: Tavesta
Status: Offline



#741976
Inlägg Skrivet: 2017-11-14 03:30      Ämne: Citera

Jag är inte helt med på din problembeskrivning. Jag gissar att json_decode också är inblandat på ett hörn, innan du printar ut det med print_r.

Jag antar att problemet du stött på är att arrayer och object hanteras annorlunda i JSON än i PHP.
I PHP är array och associativ array samma sak.
I JSON är object och associativ array samma sak.
För att object / associativ array skall bli en associativ array i php när du kör json_decode så måste du sätta andra parametern till true.

Sedan ser det ut som du har ett teckenkodningsfel också. När du använder json_encode måste strängar vara kodade med UTF-8.

Senast ändrad av harald_b den 2017-11-14 03:52, ändrad totalt 1 gång
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marcusgarden



Medlem i: 3293 dagar

Status: Offline



#741977
Inlägg Skrivet: 2017-11-14 03:41      Ämne: Citera

Det jag printar med print_r är för att se vad variabeln innehåller.

Första exemplet är print_r från den databasen jag brukar använda.
Det andra exemplet är ett försök av mig att använda PDO, printar då ut resultatet från en databasfråga med print_r.

Det jag vill åstadkomma är en json-sträng i en javascript.

På det första exemplet brukar jag då använda (där $alder_array är resultatet från db)

KOD:
1:
var alder = <?php echo json_encode($alder_array, JSON_UNESCAPED_UNICODE); ?>;


när jag försöker stoppa in resultatet från PDO-frågan i json_encode så blir resultatet bara tomt...
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4754 dagar
Från: Tavesta
Status: Offline



#741978
Inlägg Skrivet: 2017-11-14 03:54      Ämne: Citera

Om det bara blir tomt så beror det nog på att strängar inte är utf-8-kodade.

Har du ställt in så PDO använder UTF-8?

Ett tips:
Använd hellre var_dump än print_r när du felsöker. Den visar även tomma strängar, boolskt false och null och en del annat som inte går att se med print_r.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic