2013-06-26 29 views
11

tôi có thể tạo các đối tượng json đơn giản như thế này:build json mảng trong php động

$d = array('item' => "$name" ,'rate' => "$rating"); 

Nhưng nếu tôi muốn xây dựng một loạt các mặt hàng và làm điều đó tự động kể từ khi tôi đang xây dựng nó từ một truy vấn db?

Cập nhật:

Hãy để tôi được cụ thể hơn tôi biết tôi phải làm:

$jsonCode = json_encode($d); 

mà sẽ tạo ra một đối tượng json với một lĩnh vực mục và tỷ lệ. Nhưng tôi muốn nhiều đối tượng json trong một mảng json khi tôi mã hóa nó.

một cái gì đó như thế này Những gì tôi muốn JSON khôn ngoan là:

[{"item":"toy","rating":"baz" },{"item":"bike","rating":"2.3" }, {"item":"juice","rating":"1.3" }] 
+10

Đó không phải là JSON. Đó là một mảng PHP. – Paulpro

+10

Đó không phải là JSON, nó chỉ là một mảng PHP. – Barmar

+10

Đó không phải là JSON, nó chỉ là một mảng PHP. :) –

Trả lời

24

Nhưng tôi muốn nhiều đối tượng json trong một mảng json khi tôi mã hóa nó.

Sau đó, tạo một mảng của mảng và chuyển đến json_encode. documentation about arrays giải thích cách thêm phần tử vào mảng, trong phần Tạo/sửa đổi với cú pháp khung vuông.

Các mảng kết hợp, như mảng bạn đã có, sẽ được mã hóa dưới dạng đối tượng, mảng "bình thường" (mảng có phím số liên tiếp) sẽ được mã hóa thành mảng.

Ví dụ:

$d = array(); 

// This appends a new element to $d, in this case the value is another array 
$d[] = array('item' => "$name" ,'rate' => "$rating"); 

$json = json_encode($d); 
+0

ốc đảo hiếm hoi nơi php thực sự là thành ngữ và dễ dàng, thay vì bắt buộc và phong cách riêng. – ahnbizcad

0

Tại sao không tạo mảng của bạn như bạn chỉ cần đã làm nhưng sau đó vượt qua mảng thông qua json_encode?

Nếu bạn muốn có một mảng đa chiều, hãy thử

$array[] = array("key1" => value1, "key2" => value2); 
+0

Đọc giữa các dòng, vấn đề thực sự của anh ta là anh ta không biết cách tạo các mảng đa chiều. – Barmar

+0

Hãy đọc khi cập nhật, anh ấy không nói rằng anh ấy không biết làm thế nào để làm điều đó hoặc những gì anh ấy muốn chính xác khi tôi đăng bình luận –

+0

Ngay cả khi bắt đầu, dường như anh ấy không biết cách tạo ra mảng động. Anh ấy đã viết _what nếu tôi muốn xây dựng một loạt các mục và thực hiện nó một cách năng động. – Barmar

1

Những gì bạn có thể làm là tạo ra một mảng php động như bạn muốn sau đó quy đổi ra một mảng json như dưới đây.

$json_array = json_encode($array); 

Hãy nhớ rằng những gì bạn đã cung cấp không phải là một mảng json

+0

Tôi chỉ cập nhật các câu hỏi ban đầu của tôi vì tôi không đủ cụ thể – Mike

8

này sẽ tạo ra một mảng đa chiều từ truy vấn cơ sở dữ liệu của bạn, và sau đó mã hóa nó như JSON.

$d = array(); 
while ($row = $stmt->fetch_assoc()) { 
    $d[] = $row; 
} 
$json = json_encode($d); 

Mỗi $row sẽ là mảng kết hợp dữ liệu được trả về từ cơ sở dữ liệu. Chỉ định nó để $d[] thêm nó làm phần tử được lập chỉ mục của mảng vùng chứa đó.

+0

Cảm ơn! Điều này hoạt động hoàn hảo. – Harsha