2012-04-30 35 views
7

Tôi đang đối phó với highcharts với dữ liệu động (giá trị được lấy từ cơ sở dữ liệu). Bằng cách viết một truy vấn tôi đã có thể lấy lại dữ liệu sau từ bảngcách sử dụng json_encode

Item 2011 2012 
pen  5  7 
pencil 4  20 
eraser 6  43 

Tôi muốn để lưu trữ các thông tin trên trong cấu trúc sau đây và vượt qua nó đến một trang

[{ name:'pen', data: [5,7]},{ name:'pencil', data: [4,20]},{ name:'eraser', data: [6,43]}]"; 

Tôi muốn đẩy dữ liệu ở trên vào vạch cao.

Có cách nào tôi có thể tạo ở định dạng này không? Tôi đã thử sử dụng json_encode nhưng không thể thành công. Tôi có thể đạt được điều này bằng cách sử dụng json_encode không?

Updated Tôi đã thử theo cách này

while($row = mysql_fetch_assoc($result)) 
    { 
    $rows[]= $row; 

    } 
echo json_encode($rows); 

và có

[{"Item":"pen","2011":"5","2012":"7"},{"Item":"pencil","2011":"4","2012":"20"},{"Item":"eraser","2011":"6","2012":"43"}] 
+2

'json_encode' mã hóa JSON, không biểu thức đối tượng Javascript (các khóa không được kiểm soát) mà bạn có. Tuy nhiên, điều đó không quan trọng. – mario

+2

Có vẻ như một cách tiếp cận tốt hơn sẽ là tuần tự hóa dữ liệu. – nickb

+1

@JohnConde tôi đã cập nhật một số thông tin.kiểm tra – Anil

Trả lời

17

json_encode là một phương pháp tiện lợi để chuyển đổi mảng thành định dạng JSON. Để có đầu ra bạn cung cấp, bạn sẽ cần một mảng các mảng. Mỗi mảng phụ có các phím "Tên" và "dữ liệu", trong đó "tên" là mục cột, và "dữ liệu" là một mảng chứa các giá trị từ năm 2011 và 2012.

$results = mysql_query("..."); 
$arr = array(); 

while ($row = mysql_fetch_assoc($results)) 
{ 
    $name = $row['Item']; 
    $data = array($row['2011'], $row['2012']); 

    $arr[] = array('name' => $name, 'data' => $data); 
} 

echo json_encode($arr); 
3
  1. Vòng qua các kết quả cơ sở dữ liệu và đưa các kết quả trong một mảng
  2. JSON mã hóa mảng
Các vấn đề liên quan