Autor Zpráva
TikTakTak
Profil *
Ahoj,

chtel bych se zeptat, jak udelat abych po pouziti json_encode($testArray) mohl pristupovat k jednotlivym polozkam v JS (po pouziti JSON parse) k obsahu jednotlivych poli za pomoci indexu?:

Diky za kazdou radu.

<?php
$testArray = array();
$returnedArray = array("RAZ","DVA","TRI");
$returnedArray2 = array("RAZ","DVA");

$resultForTemplate[5] = $returnedArray;
$resultForTemplate[10] = $returnedArray2;

print_r($testArray);
?>
Oison
Profil
Ahoj, moc jsem to nepobral (možná jsem blb). Můžeš trochu ten problém rozvést? Spíš ukázat, jak to chceš používat v JS... Tohle PHP co zde máš neudělá vlastně nic :)
Majkl578
Profil
Z dotazu chápu, že chceš serializovat pole $resultForTemplate do JSONu, v JS jej následně deserializovat a používat nikoliv jako objekt, ale jako pole. To bude nejspíš problém, jelikož JSON nepodporuje pole s indexy. Buď je pole bez indexů (tedy 0, 1, 2, 3 atd.) nebo objekt s indexy. Ty bys chtěl, aby výstup byl něco takového:
[
    5: [
        "RAZ",
        "DVA",
        "TRI"
    ],
    10: [
        "RAZ",
        "DVA"
    ]
]
na http://jsonlint.com/ si můžeš ověřit, že to není platný JSON.

Možností je tedy použít objekt nebo do pole vložit prázdné (např. null) hodnoty na místa, aby doplnily pole dle očekávání.

Oison:
Podobné příspěvky bez obsahu si prosím příště odpusť.
1Pupik1989
Profil
Můžeš to převést i v javascriptu přes nějakou funkci s cyklem. Příklad:

function isObjectType(obj, type) {
    return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}

function convertToArray(obj){
  if(!isObjectType(obj,Object)){
    return obj;
  }
  var array = new Array();
  
  for(var i in obj){
    if(obj.hasOwnProperty(i)){
      array[i] = convertToArray(obj[i]);
    }
  }
  return array;
}

Převede se vše, co je Object, zbytek se jen přiřadí.

var jsonObject = JSON.parse('{"5":["RAZ","DVA","TRI"],"10":["RAZ","DVA"]}');

var jsonArray = convertToArray(jsonObject);

console.log(jsonArray);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0