2015-05-26 3 views
0

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

Все работает хорошо, просто я не могу преобразовать этот JSON в высокоприоритетные JSON.

{ 
    name: [ 
     1000, 
     1001 
    ], 
    data: [ 
     { 
      January: "7", 
      February: "4", 
      March: "1", 
      April: "0", 
      May: "0", 
      June: "1", 
      July: "3", 
      August: "6", 
      September: "2", 
      October: "2", 
      November: "8", 
      December: "7" 
     }, 
     { 
      January: "6", 
      February: "10", 
      March: "1", 
      April: "1", 
      May: "0", 
      June: "0", 
      July: "0", 
      August: "2", 
      September: "3", 
      October: "2", 
      November: "2", 
      December: "5" 
     } 
    ] 
} 

Highcharts поддерживается JSON

Я хочу, чтобы преобразовать этот массив в структуре как:

[ 
     { 
     name: '1000', 
     data: [7,4,1,0,0,1,3,6,2,2,8,7] 
    }, { 
     name: '1001', 
     data: [6,10,1,1,0,0,0,2,3,2, 2,5] 
    } 
] 
+3

Пожалуйста, покажите текущий код PHP –

+1

Ваша вторая структура не является действительным JSON. У вас не может быть '{' after '{'. Вы уверены, что хотите '' 'на первой строке? – Barmar

+1

use array_values ​​() –

ответ

2

Используйте foreach перебрать одно из свойств, а также построить ассоциативный массив, используя этот элемент и значения из соответствующего элемента в другом свойстве.

$result = array(); 
foreach ($input['name'] as $i => $name) { 
    $result[] = array('name' => $name, 'data' => array_map('intval', array_values($input['data'][$i]))); 
} 
+0

, как я могу удалить цитаты из массива данных для целых чисел { –

+0

имя: 1000, данные: [ "7", "4", "1", "0", " 0" , "1", "3", "6", "2", "2", "8", "7" ] }, –

+0

Используйте 'array_map ('intval' , ...) ' – Barmar

0
<?php 

$json_res = json_decode('{ 
    "name": [ 
     1000, 
     1001 
    ], 
    "data": [ 
     { 
      "January": "7", 
      "February": "4", 
      "March": "1", 
      "April": "0", 
      "May": "0", 
      "June": "1", 
      "July": "3", 
      "August": "6", 
      "September": "2", 
      "October": "2", 
      "November": "8", 
      "December": "7" 
     }, 
     { 
      "January" :"6", 
      "February" :"10", 
      "March" :"1", 
      "April" :"1", 
      "May" :"0", 
      "June" :"0", 
      "July" :"0", 
      "August" :"2", 
      "September" :"3", 
      "October" :"2", 
      "November" :"2", 
      "December" :"5" 
     } 
    ] 
}',true); 

$result = array(); 
foreach ($json_res['name'] as $key => $val) { 

    $result[] = array('name' => $val, 'data' => array_values($json_res['data'][$key])); 

} 

echo json_encode($result);exit; 
#echo '<pre>'; print_r($result); 
# answer the way you want 
//[{"name":1000,"data":["7","4","1","0","0","1","3","6","2","2","8","7"]},{"name":1001,"data":["6","10","1","1","0","0","0","2","3","2","2","5"]}] 
?> 
Смежные вопросы