Làm cách nào để tạo một mảng cho JSON bằng PHP?


Câu trả lời:


154

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-mtrê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).


2
Dang, homie, bạn đã ngay lập tức vào câu trả lời đó =). Tôi rất hào hứng với câu hỏi dễ =)
Calvin Froedge

2
Tôi có mã này trong khi ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = mảng ('areae' => $ row ["areae"], 'totale' => $ row ["prezzi"]); } in (json_encode (% control)); nhưng retun {"areae": "Puglia", "totale": "5.15"} không phải [{..}, {..}]
Mimmo

2
Thêm 1 để tham khảo chanh. :-)
ban-geengineering

Tôi đã làm điều đó nhưng phản hồi tôi nhận được bằng cách sử dụng hàm var_dumb là như sau. Làm thế nào tôi có thể thoát khỏi chuỗi (59)? chuỗi (59) "[{" kết quả ":" thành công "}, {" tin nhắn ":" Dữ liệu được cập nhật! "}]"
James Smith

115

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);

2
Xin lỗi nhưng nếu tôi muốn {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

41

Đơn giản: Chỉ cần tạo một mảng PHP (lồng nhau) và gọi json_encodenó. 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"}]

1
Xin lỗi nhưng nếu tôi muốn {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

2
Đọc bài viết của tôi một lần nữa. Nếu bạn muốn một cái gì đó dịch sang một đối tượng JSON, hãy biến nó thành một mảng kết hợp trong PHP (trong đó các khóa là các chuỗi). Nếu bạn muốn nó dịch thành một danh sách JSON, hãy biến nó thành một mảng đơn giản (với các khóa nguyên ẩn). Giá trị của mỗi phần tử mảng có thể lần lượt là một mảng, đó là những gì bạn muốn.
tdammers

Cảm ơn điều này cũng trả lời câu hỏi của tôi.
Shawn Wernig

Tôi đã làm điều đó nhưng phản hồi tôi nhận được bằng cách sử dụng hàm var_dumb là như sau. Làm thế nào tôi có thể thoát khỏi chuỗi (59)? chuỗi (59) "[{" kết quả ":" thành công "}, {" tin nhắn ":" Dữ liệu được cập nhật! "}]"
James Smith

13

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_assochà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);

3

Ngoài ra, đối với mảng, bạn có thể sử dụng chú thích ngắn:

$arr = [
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ]
];

echo json_encode($arr);

3

Đó 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)

1

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.


1
$json_data = '{ "Languages:" : [ "English", "Spanish" ] }';
$lang_data = json_decode($json_data);
var_dump($lang_data);

Làm thế nào bạn có thể tự động thêm một ngôn ngữ mới vào nút ngôn ngữ trong PHP? Cảm ơn.

0
<?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). "}";
    }

 ?>

0

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();
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.