2014-06-23 4 views
1
내가 배열에 약간의 SimpleXML을 데이터를 변환하기 위해 다음과 같은 PHP 라인을 사용

:PHP/자바 스크립트 : 자바 스크립트로 PHP에서 배열을 전달하는 방법

$dataRaw = array(); 
foreach($objCount->escalations as $esc) { 
    $dataRaw[(string)$esc->region] = (int)$esc->volume; 
} 
$dataPrep = json_decode(json_encode($dataRaw), TRUE); 

가 인쇄이 나에게 좋아 보이는 다음을 반환 :

Array ([af] => 6 [as] => 295 [eu] => 249 [na] => 279 [oc] => 42 [sa] => 10) 

내가 다음 줄을 사용하여 JS 기능이 통과 시도했지만 문제가 해결되지 않습니다. 나는 어떤 오류도 발생하지 않고있다. 차트는 내용을 인식하지 못하기 때문에 아마 이걸 보여주지 않을 것이다.

data: <?php echo $dataPrep;?> 

때 나는 하드 코딩 "데이터"JS의 값 모든 그래서 아마 잘못 전달하고 잘 작동 한 후 다음과 같이.

var data = [{ 'hc-key': 'af', value: 6 }, 
    { 'hc-key': 'as', value: 295 }, 
    { 'hc-key': 'eu', value: 249 }, 
    { 'hc-key': 'na', value: 279 }, 
    { 'hc-key': 'oc', value: 42 }, 
    { 'hc-key': 'sa', value: 10 }]; 

몇 가지 내가 여기 변경해야 무엇을 말해 줄 수?

미리 감사드립니다. Tim.

+1

json encode를 PHP로 시도하십시오 – Rajasekhar

답변

2

원하는 구조를 얻으려면이 방법을 사용해보십시오.

foreach($objCount->escalations as $esc) { 
    $dataRaw[] = array('hc-key' => (string) $esc->region, 'value' => (int) $esc->volume); 
} 

data: <?php echo json_encode($dataRaw); ?> 
+0

감사합니다. 그것은 내 경우에는 (아마도 hc 키 부분 때문에) 더 잘 작동하는 것으로 밝혀졌습니다. 그래서 나는 그 중 하나와 함께 갈 것입니다. 최대한 빨리 받아 들일 것입니다. – user2571510

4

인코딩 된 데이터를 디코딩 한 후에 전달해야합니다. 디코딩 후, 그것은 배열로 변경하고 직접 우리는 배열 변수 JS에 할당 할 수 없습니다 :

data: <?php echo $dataPrep;?> 
+0

빠른 답장을 보내 주셔서 감사합니다. 이것은 효과가 있습니다 - 최대한 빨리 받아 들일 것입니다. :) – user2571510

+0

Danijel의 아래 응답이 내 경우에 더 잘 작동한다는 것이 밝혀졌습니다 (아마도 hc 키 부분 때문에). 어쨌든 나에게 맞는 길을 가져 주셔서 감사합니다! – user2571510

1

데이터를 json_encode하면 다시 배열을 만들기 전에 자바 스크립트에서 json으로 구문 분석해야합니다. 예를 들면 다음과 같습니다. http://api.jquery.com/jquery.parsejson/

그러나 귀하의 경우에는 이미 json_decode를 호출하여 PHP 배열로 다시 변환했습니다. PHP 배열을 에코 할 수없고 자바 스크립트 배열처럼 소스에 표시 될 것으로 기대할 수 없습니다.

+0

다른 답변과 달리이 경우에는 javascript의 JSON.parse를 사용할 필요가 없습니다. – James

+0

@ 제임스는,이 선 다스 하였다 '$ dataPrep = json_decode (로 json_encode ($ dataRaw) TRUE) 여기서' 은 $ dataPrep 다시 PHP 배열 될 것이다. 'echo $ dataPrep'는 간단히'Array'를 출력으로 만듭니다 – marty

관련 문제