2013-05-08 4 views
1

같은 배열의 키를 출력하지 그래서 나는이 같은 PHP 배열이 있습니다의 PHP JSON 인코딩 문자열

$myArray = array(
'name' => 'Series Name', 
'data' => array(
    array("2012-11-13",0.71), 
    array("2012-11-14",0.45), 
    array("2012-11-15",0.65), 
    array("2012-11-16",0.67), 
    ) 
); 

I 출력 개체 이름과 같은 배열의 키 json_encoded 형태로이 배열을하고 싶습니다 (?)를. I 배열을 echo json_encode 때 내가 받기 :

{ 
    "name": "Series Name", 
    "data": [ 
     [ 
      "2012-11-13", 
      0.71 
     ], 
     [ 
      "2012-11-14", 
      0.45 
     ], 
     [ 
      "2012-11-15", 
      0.65 
     ], 
     [ 
      "2012-11-16", 
      0.67 
     ] 
    ] 
} 

이 가진 문제는 키 배열 ("이름"과 "데이터") 문자열로 출력하는 점이다. 나는 그들에게 물건이 필요하다. 나는. 그들 주위에 따옴표없이.

편집 : 목적은 하이 차트가있는 PHP 배열을 작성하고 사용하는 것입니다. this chart의 소스에서 볼 수 있듯이 데이터가 그런 식으로 전달됩니다

$(function() { 
     $('#container').highcharts({ 
      chart: { 
       type: 'spline' 
      }, 
      title: { 
       text: 'Snow depth in the Vikjafjellet mountain, Norway' 
      }, 
      subtitle: { 
       text: 'An example of irregular time data in Highcharts JS' 
      }, 
      xAxis: { 
       type: 'datetime', 
       dateTimeLabelFormats: { // don't display the dummy year 
        month: '%e. %b', 
        year: '%b' 
       } 
      }, 
      yAxis: { 
       title: { 
        text: 'Snow depth (m)' 
       }, 
       min: 0 
      }, 
      tooltip: { 
       formatter: function() { 
         return '<b>'+ this.series.name +'</b><br/>'+ 
         Highcharts.dateFormat('%e. %b', this.x) +': '+ this.y +' m'; 
       } 
      }, 

      series: [{ 
       name: 'Winter 2007-2008', 
       // Define the data points. All series have a dummy year 
       // of 1970/71 in order to be compared on the same x axis. Note 
       // that in JavaScript, months start at 0 for January, 1 for February etc. 
       data: [ 
        [Date.UTC(1970, 9, 27), 0 ], 
        [Date.UTC(1970, 10, 10), 0.6 ], 
        [Date.UTC(1970, 10, 18), 0.7 ], 
        [Date.UTC(1970, 11, 2), 0.8 ], 
        [Date.UTC(1970, 11, 9), 0.6 ], 
        [Date.UTC(1970, 11, 16), 0.6 ], 
        [Date.UTC(1970, 11, 28), 0.67], 
        [Date.UTC(1971, 0, 1), 0.81], 
        [Date.UTC(1971, 0, 8), 0.78], 
        [Date.UTC(1971, 0, 12), 0.98], 
        [Date.UTC(1971, 0, 27), 1.84], 
        [Date.UTC(1971, 1, 10), 1.80], 
        [Date.UTC(1971, 1, 18), 1.80], 
        [Date.UTC(1971, 1, 24), 1.92], 
        [Date.UTC(1971, 2, 4), 2.49], 
        [Date.UTC(1971, 2, 11), 2.79], 
        [Date.UTC(1971, 2, 15), 2.73], 
        [Date.UTC(1971, 2, 25), 2.61], 
        [Date.UTC(1971, 3, 2), 2.76], 
        [Date.UTC(1971, 3, 6), 2.82], 
        [Date.UTC(1971, 3, 13), 2.8 ], 
        [Date.UTC(1971, 4, 3), 2.1 ], 
        [Date.UTC(1971, 4, 26), 1.1 ], 
        [Date.UTC(1971, 5, 9), 0.25], 
        [Date.UTC(1971, 5, 12), 0 ] 
       ] 
      }, { 
       name: 'Winter 2008-2009', 
       data: [ 
        [Date.UTC(1970, 9, 18), 0 ], 
        [Date.UTC(1970, 9, 26), 0.2 ], 
        [Date.UTC(1970, 11, 1), 0.47], 
        [Date.UTC(1970, 11, 11), 0.55], 
        [Date.UTC(1970, 11, 25), 1.38], 
        [Date.UTC(1971, 0, 8), 1.38], 
        [Date.UTC(1971, 0, 15), 1.38], 
        [Date.UTC(1971, 1, 1), 1.38], 
        [Date.UTC(1971, 1, 8), 1.48], 
        [Date.UTC(1971, 1, 21), 1.5 ], 
        [Date.UTC(1971, 2, 12), 1.89], 
        [Date.UTC(1971, 2, 25), 2.0 ], 
        [Date.UTC(1971, 3, 4), 1.94], 
        [Date.UTC(1971, 3, 9), 1.91], 
        [Date.UTC(1971, 3, 13), 1.75], 
        [Date.UTC(1971, 3, 19), 1.6 ], 
        [Date.UTC(1971, 4, 25), 0.6 ], 
        [Date.UTC(1971, 4, 31), 0.35], 
        [Date.UTC(1971, 5, 7), 0 ] 
       ] 
      }, { 
       name: 'Winter 2009-2010', 
       data: [ 
        [Date.UTC(1970, 9, 9), 0 ], 
        [Date.UTC(1970, 9, 14), 0.15], 
        [Date.UTC(1970, 10, 28), 0.35], 
        [Date.UTC(1970, 11, 12), 0.46], 
        [Date.UTC(1971, 0, 1), 0.59], 
        [Date.UTC(1971, 0, 24), 0.58], 
        [Date.UTC(1971, 1, 1), 0.62], 
        [Date.UTC(1971, 1, 7), 0.65], 
        [Date.UTC(1971, 1, 23), 0.77], 
        [Date.UTC(1971, 2, 8), 0.77], 
        [Date.UTC(1971, 2, 14), 0.79], 
        [Date.UTC(1971, 2, 24), 0.86], 
        [Date.UTC(1971, 3, 4), 0.8 ], 
        [Date.UTC(1971, 3, 18), 0.94], 
        [Date.UTC(1971, 3, 24), 0.9 ], 
        [Date.UTC(1971, 4, 16), 0.39], 
        [Date.UTC(1971, 4, 21), 0 ] 
       ] 
      }] 
     }); 
    }); 

이 JSON이나 자바 스크립트 개체를 형성하는 또 다른 방법인가?

+2

그 다음은 무효'JSON'을 생성합니다. –

+0

그래서 열쇠를 인용하지 않으면 열쇠가 갑자기 왜곡됩니까? 또한 귀하의 예제 배열에서, 그들은 문자열의 핵심 가치입니다 .. 어떻게 마술로 그것을 개체로 변환 할 계획입니까? – dbf

+0

정확한 문구를 사용했는지 알 수 없습니다. 내 목표는 highcharts에 필요한 구조와 동일한 구조로 코드를 작성하는 것입니다.이 차트는 일련의 차트에 대한 js 객체입니다. – harryg

답변

-1

stdClass을 사용하십시오. 당신이 stdClass이 무엇인지 모르는 경우

$obj = new stdClass(); 

$obj->name = "Series Name"; 
$obj->data = array(
    array("2012-11-13",0.71), 
    array("2012-11-14",0.45), 
    array("2012-11-15",0.65), 
    array("2012-11-16",0.67), 
    ); 

echo json_encode($obj); 

, this 주제에서 찾아보세요

편집 : JSON이 유효 코드를 생성하기 위해서는, 숫자 사람을 제외한 모든 키/값 쌍, 내부에 브라우저가 자바 스크립트를 사용하여 JSON 문자열을 구문 분석 할 수 JSON.parse();을 지원하기 위해 당신이 클라이언트 측에서 JSON 개체를 사용하고자하는 가정

+0

불행 해 보이지 않는 것 같습니다. 키는 여전히 따옴표 안에 있습니다. – harryg

+2

@harryg 물론 그들은 그렇습니다! 그리고 그들은 유효한 JSON 객체를 생성해야합니다. 숫자 항목 만 인용 부호없이 표시 될 수 있습니다. http://www.json.org/ –

+0

연관 배열과 객체는 동일한 json 구문이 될 것입니다 – micha149

1

인용해야합니다

obj = JSON.parse(json); 

어떤 json 서버 (당신의 PHP 파일에 json_encode($array);의 결과)에서 전달하여 JSON 문자열입니다, 그러나 브라우저의 호환성을 위해, 당신은 jQuery를 사용할 수 있습니다

obj = $.parseJSON(json);