Изменить структуру массива для создания JSON

Я хотел бы изменить структуру моего массива, чтобы получить немного другой файл JSON. Я пытался положить 'category' в дополнительный массив, но это не работает.

В JSON 'category' должен быть в дополнительном []:

"categories": [{
"category": [{
"label": "N.12\/02"}, {
"label": "Pn.13\/02"}, {
"label": "Wt.14\/02"}, {
"label": "\u015ar.15\/02"}, {
"label": "Cz.16\/02"}, {
"label": "Pt.17\/02"}, {
"label": "So.18\/02"}]
}],

вместо:

"categories": {
"category": [{
"label": "N.12\/02"}, {
"label": "Pn.13\/02"}, {
"label": "Wt.14\/02"}, {
"label": "\u015ar.15\/02"}, {
"label": "Cz.16\/02"}, {
"label": "Pt.17\/02"}, {
"label": "So.18\/02"}]
},

Я использую этот код для создания массива, а затем JSON:

$arrData = array(
"chart" => array(
"caption" => "Number of visitors last week",
"subCaption" => "Bakersfield Central vs Los Angeles Topanga",
"captionFontSize" => "14",
"subcaptionFontSize" => "14",
"subcaptionFontBold" => "0",
"paletteColors" => "#0075c2,#1aaf5d,#FF5733,#33B5FF",
"bgcolor" => "#ffffff",
"showBorder" => "0",
"showShadow" => "0",
"showCanvasBorder" => "0",
"usePlotGradientColor" => "0",
"legendBorderAlpha" => "0",
"legendShadow" => "0",
"showAxisLines" => "0",
"showAlternateHGridColor" => "0",
"divlineThickness" => "1",
"divLineDashed" => "1",
"divLineDashLen" => "1",
"xAxisName" => "Day",
"showValues" => "0")
);

$actualCategory = array( $rowData[0][1], $rowData[0][2], $rowData[0][3], $rowData[0][4], $rowData[0][5], $rowData[0][6], $rowData[0][7]);
$a = array(
array( $rowData[2][1], $rowData[2][2], $rowData[2][3], $rowData[2][4], $rowData[2][5], $rowData[2][6], $rowData[2][7]),
array( $rowData[5][1], $rowData[5][2], $rowData[5][3], $rowData[5][4], $rowData[5][5], $rowData[5][6], $rowData[5][7]),
array( $rowData[8][1], $rowData[8][2], $rowData[8][3], $rowData[8][4], $rowData[8][5], $rowData[8][6], $rowData[8][7]),
array( $rowData[11][1], $rowData[11][2], $rowData[11][3], $rowData[11][4], $rowData[11][5], $rowData[11][6], $rowData[11][7])
);$arrData['categories'] = array( 'category' => array());
foreach ($actualCategory as $value) {
array_push($arrData['categories']['category'],
array(
'label' => $value
)
);
}

$arrData['dataset'] = array();

$q = 1;
for($z = 0;$z <= 3; $z++){

$x[$z] = array('seriesname' => $rowData[$q][0], 'data' => array());
foreach ($a[$z] as $value) {
array_push($x[$z]['data'],
array(
'value' => $value
)
);
}
$q = $q + 3;
}
$arrData['dataset'] = $x;
$jsonEncodedData = json_encode($arrData);

На данный момент у меня есть такой вывод:

{"chart":{"caption":"Number of visitors last week","subCaption":"Bakersfield Central vs Los Angeles Topanga","captionFontSize":"14","subcaptionFontSize":"14","subcaptionFontBold":"0","paletteColors":"#0075c2,#1aaf5d,#FF5733,#33B5FF","bgcolor":"#ffffff","showBorder":"0","showShadow":"0","showCanvasBorder":"0","usePlotGradientColor":"0","legendBorderAlpha":"0","legendShadow":"0","showAxisLines":"0","showAlternateHGridColor":"0","divlineThickness":"1","divLineDashed":"1","divLineDashLen":"1","xAxisName":"Day","showValues":"0"},"categories":{"category":[{"label":"N.12\/02"},{"label":"Pn.13\/02"},{"label":"Wt.14\/02"},{"label":"\u015ar.15\/02"},{"label":"Cz.16\/02"},{"label":"Pt.17\/02"},{"label":"So.18\/02"}]},"dataset":[{"seriesname":"IRDN","data":[{"value":"142.59"},{"value":"174.88"},{"value":"176.97"},{"value":"182.48"},{"value":"160.15"},{"value":"160.72"},{"value":"165.47"}]},{"seriesname":"SIRDN","data":[{"value":"148.81"},{"value":"197.29"},{"value":"202.27"},{"value":"211.93"},{"value":"177.87"},{"value":"179.37"},{"value":"177.69"}]},{"seriesname":"IRDN24","data":[{"value":"140.31"},{"value":"174.50"},{"value":"180.38"},{"value":"187.70"},{"value":"161.91"},{"value":"161.62"},{"value":"160.98"}]},{"seriesname":"IRDN 8.22","data":[{"value":"147.33"},{"value":"197.02"},{"value":"202.21"},{"value":"211.28"},{"value":"178.11"},{"value":"179.32"},{"value":"176.31"}]}]}

JSON файл мне нужен:

{"chart":{"caption":"Number of visitors last week","subCaption":"Bakersfield Central vs Los Angeles Topanga","captionFontSize":"14","subcaptionFontSize":"14","subcaptionFontBold":"0","paletteColors":"#0075c2,#1aaf5d,#FF5733,#33B5FF","bgcolor":"#ffffff","showBorder":"0","showShadow":"0","showCanvasBorder":"0","usePlotGradientColor":"0","legendBorderAlpha":"0","legendShadow":"0","showAxisLines":"0","showAlternateHGridColor":"0","divlineThickness":"1","divLineDashed":"1","divLineDashLen":"1","xAxisName":"Day","showValues":"0"},"categories":[{"category":[{"label":"N.12\/02"},{"label":"Pn.13\/02"},{"label":"Wt.14\/02"},{"label":"\u015ar.15\/02"},{"label":"Cz.16\/02"},{"label":"Pt.17\/02"},{"label":"So.18\/02"}]}],"dataset":[{"seriesname":"IRDN","data":[{"value":"142.59"},{"value":"174.88"},{"value":"176.97"},{"value":"182.48"},{"value":"160.15"},{"value":"160.72"},{"value":"165.47"}]},{"seriesname":"SIRDN","data":[{"value":"148.81"},{"value":"197.29"},{"value":"202.27"},{"value":"211.93"},{"value":"177.87"},{"value":"179.37"},{"value":"177.69"}]},{"seriesname":"IRDN24","data":[{"value":"140.31"},{"value":"174.50"},{"value":"180.38"},{"value":"187.70"},{"value":"161.91"},{"value":"161.62"},{"value":"160.98"}]},{"seriesname":"IRDN 8.22","data":[{"value":"147.33"},{"value":"197.02"},{"value":"202.21"},{"value":"211.28"},{"value":"178.11"},{"value":"179.32"},{"value":"176.31"}]}]}

Дамп моего массива:

array(3) { ["chart"]=> array(20) { ["caption"]=> string(28) "Number of visitors last week" ["subCaption"]=> string(42) "Bakersfield Central vs Los Angeles Topanga" ["captionFontSize"]=> string(2) "14" ["subcaptionFontSize"]=> string(2) "14" ["subcaptionFontBold"]=> string(1) "0" ["paletteColors"]=> string(31) "#0075c2,#1aaf5d,#FF5733,#33B5FF" ["bgcolor"]=> string(7) "#ffffff" ["showBorder"]=> string(1) "0" ["showShadow"]=> string(1) "0" ["showCanvasBorder"]=> string(1) "0" ["usePlotGradientColor"]=> string(1) "0" ["legendBorderAlpha"]=> string(1) "0" ["legendShadow"]=> string(1) "0" ["showAxisLines"]=> string(1) "0" ["showAlternateHGridColor"]=> string(1) "0" ["divlineThickness"]=> string(1) "1" ["divLineDashed"]=> string(1) "1" ["divLineDashLen"]=> string(1) "1" ["xAxisName"]=> string(3) "Day" ["showValues"]=> string(1) "0" } ["categories"]=> array(1) { ["category"]=> array(7) { [0]=> array(1) { ["label"]=> string(80) " N. 12/02 " } [1]=> array(1) { ["label"]=> string(81) " Pn. 13/02 " } [2]=> array(1) { ["label"]=> string(81) " Wt. 14/02 " } [3]=> array(1) { ["label"]=> string(82) " Śr. 15/02 " } [4]=> array(1) { ["label"]=> string(81) " Cz. 16/02 " } [5]=> array(1) { ["label"]=> string(81) " Pt. 17/02 " } [6]=> array(1) { ["label"]=> string(81) " So. 18/02 " } } } ["dataset"]=> array(4) { [0]=> array(2) { ["seriesname"]=> string(34) " IRDN " ["data"]=> array(7) { [0]=> array(1) { ["value"]=> string(43) " 142.59 " } [1]=> array(1) { ["value"]=> string(43) " 174.88 " } [2]=> array(1) { ["value"]=> string(43) " 176.97 " } [3]=> array(1) { ["value"]=> string(43) " 182.48 " } [4]=> array(1) { ["value"]=> string(43) " 160.15 " } [5]=> array(1) { ["value"]=> string(43) " 160.72 " } [6]=> array(1) { ["value"]=> string(43) " 165.47 " } } } [1]=> array(2) { ["seriesname"]=> string(80) " SIRDN " ["data"]=> array(7) { [0]=> array(1) { ["value"]=> string(61) " 148.81 " } [1]=> array(1) { ["value"]=> string(61) " 197.29 " } [2]=> array(1) { ["value"]=> string(61) " 202.27 " } [3]=> array(1) { ["value"]=> string(61) " 211.93 " } [4]=> array(1) { ["value"]=> string(61) " 177.87 " } [5]=> array(1) { ["value"]=> string(61) " 179.37 " } [6]=> array(1) { ["value"]=> string(61) " 177.69 " } } } [2]=> array(2) { ["seriesname"]=> string(74) " IRDN24 " ["data"]=> array(7) { [0]=> array(1) { ["value"]=> string(60) " 140.31 " } [1]=> array(1) { ["value"]=> string(60) " 174.50 " } [2]=> array(1) { ["value"]=> string(60) " 180.38 " } [3]=> array(1) { ["value"]=> string(60) " 187.70 " } [4]=> array(1) { ["value"]=> string(60) " 161.91 " } [5]=> array(1) { ["value"]=> string(60) " 161.62 " } [6]=> array(1) { ["value"]=> string(60) " 160.98 " } } } [3]=> array(2) { ["seriesname"]=> string(112) " IRDN 8.22 " ["data"]=> array(7) { [0]=> array(1) { ["value"]=> string(69) " 147.33 " } [1]=> array(1) { ["value"]=> string(69) " 197.02 " } [2]=> array(1) { ["value"]=> string(69) " 202.21 " } [3]=> array(1) { ["value"]=> string(69) " 211.28 " } [4]=> array(1) { ["value"]=> string(69) " 178.11 " } [5]=> array(1) { ["value"]=> string(69) " 179.32 " } [6]=> array(1) { ["value"]=> string(69) " 176.31 " } } } } }

Мой вопрос заключается в том, как изменить мой код сделать это?

0

Решение

Вы должны использовать

$arrData['categories'] = array( array ('category' => array()));

вместо

$arrData['categories'] = array( 'category' => array());

Это будет работать так, как вы хотите.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector