2013-10-09 50 views
0

我想要創建看起來像這樣與循環來創建JSON數據

[{ 「名」 JSON數據添加具有array_push)元件([ 「150」, 「250」, 「300」]},{ 「名稱」: 「JS」, 「數據」:[ 「175」, 「180」, 「210」]},{ 「名稱」: 「MS」, 「數據」 : 「100」, 「75」, 「200」]}]

,這裏是我創建

$c = mysql_query("SELECT distinct nama FROM tcoba ORDER BY nama ASC"); 
while($ca = mysql_fetch_array($c)) 
{ 
    $cb[] = $ca['nama']; 
} 
$cc = array(); 
$cc = count($cb); 
if(count($cb) > 1) 
{ 
    for($i=0;$i<$cc;$i++) 
    { 
     $b = mysql_query("SELECT distinct nama, jumlah FROM tcoba WHERE nama = '$cb[$i]'"); 
     $rows = array(); 
     while($ba = mysql_fetch_array($b)) 
     { 
      $rows['name'] = $ba[0]; 
      $rows['data'][] = $ba['jumlah']; 
     } 
     $result = array(); 
     array_push($result,$rows); 
     print json_encode($result); 
    } 
} 

腳本,並從我的SCR結果IPT是

[{ 「名稱」: 「AS」, 「數據」:[ 「150」, 「250」, 「300」]}] [{ 「名稱」: 「JS」,「數據「:[」175「,」180「,」210「]}] [{」name「:」MS「,」data「:[」100「,」75「,」200「]}]

仍然沒有什麼我想告訴匹配...

編輯:WORK

$result = array(); 
for($i=0;$i<$cc;$i++) 
{ 
    $b = mysql_query("SELECT distinct nama, jumlah FROM tcoba WHERE nama = '$cb[$i]'"); 
    $rows = array(); 
    while($ba = mysql_fetch_array($b)) 
    { 
     $rows['name'] = $ba[0]; 
     $rows['data'][] = $ba['jumlah']; 
    } 

    array_push($result,$rows); 

}print json_encode($result); 

回答

1

移動後的for循環的打印,並且不重新初始化$result到EMP ty數組內循環。

也...

$cc = array(); 
$cc = count($cb); 

其中之一線是多餘的(可能是第一個)。

+0

如何在循環內不重新初始化$ result? 有個例子嗎? – alexalexalex

+0

該行:'$ result = array();'試着在for循環之上移動它。現在你每過一次循環就清空它。 –

+0

它工作夥計... thnks這麼多... – alexalexalex

1

有兩件事情你的代碼錯誤:

  • 你重新inializing陣列上的每個迭代
  • 你打印在每次迭代

JSON字符串什麼你會看到輸出結合了三個JSON字符串。由於代碼中沒有換行符,它將顯示爲一個大的JSON字符串。

您的代碼應該是這樣的:

$result = array(); // initialize the array 
while($ba = mysql_fetch_array($b)) 
{ 
    $rows['name'] = $ba[0]; 
    $rows['data'][] = $ba['jumlah']; 
    array_push($result,$rows); 
} 
print json_encode($result); 
+0

解決花花公子 $ result = array(); ($ ba = mysql_fetch_array($ b)) { $ rows ['name'] = $ ba [0];($ i = 0; $ i <$ cc; $ i ++) $ rows ['data'] [] = $ ba ['jumlah']; array_push($ result,$ rows); } ) print json_encode($ result); 使用該腳本 – alexalexalex

+0

對不起,我在這裏小菜... :)但已經給支票看看 – alexalexalex

0

移動$result = array();循環之前發生的,甚至可能是,如果塊之前。你可以從那裏處理代碼。

0

Highcharts使用數字數據,但您的數據是一串字符串。所以你需要通過parseFloat()來解析它,或者使用json_encode()和JSON_NUMERIC_CHECK來允許返回正確的JSON值。