У меня есть это json:
{
"headers": ["x", "y", "z"],
"data": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"rows": ["a", "b", "c"]
}
, и я хотел бы закончить с этим:
[{
"row": "a",
"header": "x",
"value": 1
}, {
"row": "a",
"header": "y",
"value": 2
}, {
"row": "a",
"header": "z",
"value": 3
}, {
"row": "b",
"header": "x",
"value": 4
}, {
"row": "b",
"header": "y",
"value": 5
}, {
"row": "b",
"header": "z",
"value": 6
}, {
"row": "c",
"header": "x",
"value": 7
}, {
"row": "c",
"header": "y",
"value": 8
}, {
"row": "c",
"header": "z",
"value": 9
}]
Как мне это сделать? Я возился с вложенным foreach
, пока моя голова не взорвалась. JQ такой крутой, но такой другой. Вот как бы я это сделал в PHP:
$jsonString = '{
"headers": ["x", "y", "z"],
"data": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"rows": ["a", "b", "c"]
}';
$json = json_decode($jsonString);
$output = [];
$k = 0;
foreach($json->rows as $r) {
foreach($json->headers as $h) {
$p = new stdClass();
$p->row = $r;
$p->header = $h;
$p->value = $json->data[$k];
$output[] = $p;
$k++;
}
}
echo json_encode($output);
Спасибо!