Autor Zpráva
sir_lamoid
Profil
Zdravím,
potřeboval bych jednoduchou věc. Mám dejme tomu json
[
  {
    "idroom": 2,
    "id": "5",
    "typ": "dvere",
    "id-backup": "5",
    "coord-x": "188",
    "coord-y": "21",
    "size-w": "29",
    "size-h": "30",
    "rotation": "0"
  },
  {
    "idroom": 2,
    "id": "6",
    "typ": "stul_90",
    "id-backup": "6",
    "coord-x": "103",
    "coord-y": "141",
    "size-w": "50",
    "size-h": "50",
    "rotation": "0"
  },
  {
    "idroom": 2,
    "id": "6",
    "typ": "stul_90",
    "id-backup": "7",
    "coord-x": "188",
    "coord-y": "101",
    "size-w": "50",
    "size-h": "50",
    "rotation": "0"
  }
]

A potřebuji tenhle json překopat nějákými foreach atd na tento format:
[
  [
    {
      "idroom": 2,
      "id": "5",
      "typ": "dvere",
      "id-backup": "5",
      "coord-x": "188",
      "coord-y": "21",
      "size-w": "29",
      "size-h": "30",
      "rotation": "0"
    }
  ],
  [
    {
      "idroom": 2,
      "id": "6",
      "typ": "stul_90",
      "id-backup": "6",
      "coord-x": "103",
      "coord-y": "141",
      "size-w": "50",
      "size-h": "50",
      "rotation": "0"
    },
    {
      "idroom": 2,
      "id": "6",
      "typ": "stul_90",
      "id-backup": "7",
      "coord-x": "188",
      "coord-y": "101",
      "size-w": "50",
      "size-h": "50",
      "rotation": "0"
    }
  ]
]

ala seřadit podle id do jednotlivých polí
DJ Miky
Profil
Pokud si JSON zparsuješ (json_decode), pak je jedna možnost např. uložit si jednotlivé objekty do dvourozměrného pole:
$novePole = [];
foreach($puvodniPole as $polozka) {
  $id = (int) $polozka->id;
  if(isset($novePole[$id])) $novePole[$id][] = $polozka;
  else $novePole[$id] = [ $polozka ];
}
Dostaneš pole o dvou položkách, zhruba v podobě:
array(5 => array(jeden objekt), 6 => array(dva objekty)).
Pak už by mělo stačit ho seřadit podle klíče (ksort; to je nutné, pokud ve zdrojovém poli nejsou objekty seřazeny podle ID) a následně zbavit se klíčů (array_values). A pak převést zpět do JSON (json_encode).
Toto téma je uzamčeno. Odpověď nelze zaslat.