Câu trả lời:
Dễ dàng vắt chanh chanh: http://www.php.net/manual/en/feft.json-encode.php
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Có một bài đăng andyrusterholz at g-m-a-i-l dot c-o-m
trên trang đã nói ở trên cũng có thể xử lý các mảng lồng nhau phức tạp (nếu đó là điều của bạn).
Sử dụng bản địa của PHP json_encode
, như thế này:
<?php
$arr = array(
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
)
);
echo json_encode($arr);
?>
Cập nhật : Để trả lời câu hỏi của bạn trong bình luận. Bạn làm như thế này:
$named_array = array(
"nome_array" => array(
array(
"foo" => "bar"
),
array(
"foo" => "baz"
)
)
);
echo json_encode($named_array);
Đơn giản: Chỉ cần tạo một mảng PHP (lồng nhau) và gọi json_encode
nó. Mảng số dịch vào danh sách JSON ( []
), mảng kết hợp và đối tượng PHP dịch thành đối tượng ( {}
). Thí dụ:
$a = array(
array('foo' => 'bar'),
array('foo' => 'baz'));
$json = json_encode($a);
Mang đến cho bạn:
[{"foo":"bar"},{"foo":"baz"}]
Cách tốt nhất mà bạn nên đi mỗi lần để tạo json trong php là trước tiên chuyển đổi các giá trị trong mảng ASSOCIECT.
Sau đó chỉ cần mã hóa bằng cách sử dụng json_encode($associativeArray)
. Tôi nghĩ rằng đó là cách tốt nhất để tạo json trong php bởi vì bất cứ khi nào chúng ta tìm nạp truy vấn sql dạng kết quả trong php hầu hết thời gian chúng ta đều nhận được các giá trị bằng fetch_assoc
hàm, cũng trả về một mảng kết hợp.
$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';
... Vân vân.
Sau đó.
json_encode($associativeArray);
Đó là cách tôi có thể làm với sự trợ giúp của giải pháp được đưa ra bởi @tdammers bên dưới. Dòng sau sẽ được đặt bên trong vòng lặp foreach.
$array[] = array('power' => trim("Some value"), 'time' => "time here" );
Và sau đó mã hóa mảng bằng hàm mã hóa json
json_encode(array('newvalue'=> $array), 200)
Chỉ cần gõ một dòng này sẽ cung cấp cho bạn một mảng json,
echo json_encode($array);
Thông thường bạn sử dụng json_encode
để đọc dữ liệu từ ứng dụng ios hoặc Android. vì vậy hãy chắc chắn rằng bạn không lặp lại bất cứ điều gì khác ngoài mảng json chính xác.
<?php
$username=urldecode($_POST['log_user']);
$user="select * from tbl_registration where member_id= '".$username."' ";
$rsuser = $obj->select($user);
if(count($rsuser)>0)
{
// (Status if 2 then its expire) (1= use) ( 0 = not use)
$cheknew="select name,ldate,offer_photo from tbl_offer where status=1 ";
$rscheknew = $obj->selectjson($cheknew);
if(count($rscheknew)>0)
{
$nik=json_encode($rscheknew);
echo "{\"status\" : \"200\" ,\"responce\" : \"201\", \"message\" : \"Get Record\",\"feed\":".str_replace("<p>","",$nik). "}";
}
else
{
$row2="No Record Found";
$nik1=json_encode($row2);
echo "{\"status\" : \"202\", \"responce\" : \"604\",\"message\" : \"No Record Found \",\"feed\":".str_replace("<p>","",$nik1). "}";
}
}
else
{
$row2="Invlid User";
$nik1=json_encode($row2);
echo "{\"status\" : \"404\", \"responce\" : \"602\",\"message\" : \"Invlid User \",\"feed\":".str_replace("<p>","",$nik1). "}";
}
?>
Tôi đã tạo một lớp jsonOBJ thô sơ và đơn giản để sử dụng cho mã của mình. PHP không bao gồm các hàm json như JavaScript / Node do. Bạn phải lặp đi lặp lại khác nhau, nhưng có thể hữu ích.
<?php
// define a JSON Object class
class jsonOBJ {
private $_arr;
private $_arrName;
function __construct($arrName){
$this->_arrName = $arrName;
$this->_arr[$this->_arrName] = array();
}
function toArray(){return $this->_arr;}
function toString(){return json_encode($this->_arr);}
function push($newObjectElement){
$this->_arr[$this->_arrName][] = $newObjectElement; // array[$key]=$val;
}
function add($key,$val){
$this->_arr[$this->_arrName][] = array($key=>$val);
}
}
// create an instance of the object
$jsonObj = new jsonOBJ("locations");
// add items using one of two methods
$jsonObj->push(json_decode("{\"location\":\"TestLoc1\"}",true)); // from a JSON String
$jsonObj->push(json_decode("{\"location\":\"TestLoc2\"}",true));
$jsonObj->add("location","TestLoc3"); // from key:val pairs
echo "<pre>" . print_r($jsonObj->toArray(),1) . "</pre>";
echo "<br />" . $jsonObj->toString();
?>
Sẽ xuất:
Array
(
[locations] => Array
(
[0] => Array
(
[location] => TestLoc1
)
[1] => Array
(
[location] => TestLoc2
)
[2] => Array
(
[location] => TestLoc3
)
)
)
{"locations":[{"location":"TestLoc1"},{"location":"TestLoc2"},{"location":"TestLoc3"}]}
Để lặp lại, chuyển đổi thành một đối tượng bình thường:
$myObj = $jsonObj->toArray();
Sau đó:
foreach($myObj["locations"] as $locationObj){
echo $locationObj["location"] ."<br />";
}
Đầu ra:
TestLoc1
TestLoc2
TestLoc3
Truy cập trực tiếp:
$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];
Một ví dụ thực tế:
// return a JSON Object (jsonOBJ) from the rows
function ParseRowsAsJSONObject($arrName, $rowRS){
$jsonArr = new jsonOBJ($arrName); // name of the json array
$rows = mysqli_num_rows($rowRS);
if($rows > 0){
while($rows > 0){
$rd = mysqli_fetch_assoc($rowRS);
$jsonArr->push($rd);
$rows--;
}
mysqli_free_result($rowRS);
}
return $jsonArr->toArray();
}