Bagaimana cara membuat array untuk JSON menggunakan PHP?


Jawaban:


154

Jeruk lemon yang mudah dicampuri: http://www.php.net/manual/en/function.json-encode.php

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

Ada posting oleh andyrusterholz at g-m-a-i-l dot c-o-mpada halaman tersebut yang juga dapat menangani array bersarang yang kompleks (jika itu yang Anda maksud).


2
Sial, homie, Anda langsung menjawabnya =). Saya senang dengan pertanyaan mudah =)
Calvin Froedge

2
Saya memiliki kode ini sementara ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ('regione' => $ row ["regione"], 'totale' => $ row ["prezzi"]); } print (json_encode (% control)); tapi retun {"regione": "Puglia", "totale": "5.15"} bukan [{..}, {..}]
Mimmo

2
Tambahkan 1 untuk referensi lemon. :-)
larangan geoengineering

Saya melakukan itu tetapi respons yang saya dapatkan menggunakan fungsi var_dumb adalah sebagai berikut. Bagaimana saya bisa menyingkirkan string (59)? string (59) "[{" result ":" success "}, {" message ":" Data diperbarui! "}]"
James Smith

115

Gunakan PHP asli json_encode, seperti ini:

<?php
$arr = array(
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    )
);

echo json_encode($arr);
?>

Pembaruan : Untuk menjawab pertanyaan Anda di komentar. Anda melakukannya seperti ini:

$named_array = array(
    "nome_array" => array(
        array(
            "foo" => "bar"
        ),
        array(
            "foo" => "baz"
        )
    )
);
echo json_encode($named_array);

2
Maaf, tetapi jika saya ingin {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

41

Sederhana: Cukup buat array PHP (bersarang) dan panggil json_encodedi atasnya. Array numerik diterjemahkan ke dalam daftar JSON ( []), array asosiatif dan objek PHP diterjemahkan menjadi objek ( {}). Contoh:

$a = array(
        array('foo' => 'bar'),
        array('foo' => 'baz'));
$json = json_encode($a);

Memberi anda:

[{"foo":"bar"},{"foo":"baz"}]

1
Maaf, tetapi jika saya ingin {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

2
Baca posting saya lagi. Jika Anda menginginkan sesuatu untuk diterjemahkan menjadi objek JSON, buatlah array asosiatif dalam PHP (di mana kuncinya adalah string). Jika Anda ingin menerjemahkannya ke dalam daftar JSON, buatlah array sederhana (dengan kunci integer implisit). Nilai dari setiap elemen array pada gilirannya dapat berupa array, yang merupakan apa yang Anda inginkan.
tdammers

Terima kasih, ini menjawab pertanyaan saya juga.
Shawn Wernig

Saya melakukan itu tetapi respons yang saya dapatkan menggunakan fungsi var_dumb adalah sebagai berikut. Bagaimana saya bisa menyingkirkan string (59)? string (59) "[{" result ":" success "}, {" message ":" Data diperbarui! "}]"
James Smith

13

Cara terbaik yang harus Anda lakukan setiap kali membuat json di php adalah dengan pertama-tama mengonversi nilai dalam array ASSOCIATIVE.

Setelah itu cukup cukup encode menggunakan json_encode($associativeArray). Saya pikir itu adalah cara terbaik untuk membuat json di php karena setiap kali kita mengambil kueri hasil sql di php sebagian besar waktu kita mendapat nilai menggunakan fetch_assocfungsi, yang juga mengembalikan satu array asosiatif.

$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';

... dll.

Setelah itu.

json_encode($associativeArray);

3

juga untuk array Anda dapat menggunakan penjelasan singkat:

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

echo json_encode($arr);

3

Begitulah cara saya dapat melakukan dengan bantuan solusi yang diberikan oleh @tdammers di bawah ini. Baris berikut akan ditempatkan di dalam foreach loop.

$array[] = array('power' => trim("Some value"), 'time' => "time here" );

Dan kemudian mengkodekan array dengan fungsi enkode json

json_encode(array('newvalue'=> $array), 200)

1

Cukup mengetik satu baris ini akan memberi Anda json array,

echo json_encode($array);

Biasanya Anda gunakan json_encodeuntuk membaca data dari aplikasi iOS atau Android. jadi pastikan Anda tidak menggemakan hal lain selain json array yang akurat.


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

Bagaimana Anda secara dinamis menambahkan bahasa baru ke simpul bahasa di PHP? Terima kasih.

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

Saya membuat kelas jsonOBJ mentah dan sederhana untuk digunakan untuk kode saya. PHP tidak termasuk fungsi json seperti JavaScript / Node do. Anda harus mengulang secara berbeda, tetapi mungkin bisa membantu.

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

Akan menghasilkan:

Array
(
    [locations] => Array
        (
            [0] => Array
                (
                    [location] => TestLoc1
                )

            [1] => Array
                (
                    [location] => TestLoc2
                )

            [2] => Array
                (
                    [location] => TestLoc3
                )

        )

)


{"locations":[{"location":"TestLoc1"},{"location":"TestLoc2"},{"location":"TestLoc3"}]}

Untuk beralih, konversikan ke objek normal:

$myObj = $jsonObj->toArray();

Kemudian:

foreach($myObj["locations"] as $locationObj){
    echo $locationObj["location"] ."<br />";
}

Output:

TestLoc1
TestLoc2
TestLoc3

Akses langsung:

$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];

Contoh praktis:

// 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();
    }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.