PHP kullanarak JSON için bir dizi nasıl oluşturulur?


Yanıtlar:


154

Kolay peasy limon sıkacağı: 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);
?>

andyrusterholz at g-m-a-i-l dot c-o-mYukarıda belirtilen sayfada, karmaşık iç içe dizileri de işleyebilen bir gönderi var (eğer bu senin işinse).


2
Dang, dostum, o cevaba anında geldin =). Kolay soru için heyecanlandım =)
Calvin Froedge

2
Bu koda sahibim while ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ('regione' => $ row ["regione"], 'totale' => $ row ["prezzi"]); } baskı (json_encode (% kontrol)); ancak {"regione": "Puglia", "totale": "5.15"} değil [{..}, {..}]
Mimmo

2
Limon referansı için 1 ekleyin. :-)
ban-geoengineering

Bunu yaptım ama var_dumb işlevini kullanarak aldığım yanıt aşağıdaki gibi. İpten (59) nasıl kurtulabilirim? string (59) "[{" sonuç ":" başarılı "}, {" message ":" Veriler güncellendi! "}]"
James Smith

115

PHP'nin yerelini şu şekilde kullanın json_encode:

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

echo json_encode($arr);
?>

Güncelleme : Sorunuzu yorumda cevaplamak için. Bunu böyle yaparsın:

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

2
Affedersiniz ama {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} istersem ??
Mimmo

41

Basit: Bir (yuvalanmış) PHP dizisi oluşturun ve json_encodeonu çağırın . Sayısal diziler JSON listelerine ( []), ilişkilendirilebilir dizilere ve PHP nesneleri nesnelere ( {}) çevrilir . Misal:

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

Sana verir:

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

1
Affedersiniz ama {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} istersem ??
Mimmo

2
Yazımı tekrar oku. Bir şeyin JSON nesnesine çevrilmesini istiyorsanız, onu PHP'de (anahtarların dizeler olduğu) ilişkilendirilebilir bir dizi yapın. Bir JSON listesine çevrilmesini istiyorsanız, onu düz bir dizi yapın (örtük tamsayı anahtarlarıyla). Her dizi elemanının değeri sırayla bir dizi olabilir, ki bu da istediğiniz şeydir.
tdammers

Teşekkürler bu da sorumu yanıtladı.
Shawn Wernig

Bunu yaptım ama var_dumb işlevini kullanarak aldığım yanıt aşağıdaki gibi. İpten (59) nasıl kurtulabilirim? string (59) "[{" sonuç ":" başarılı "}, {" message ":" Veriler güncellendi! "}]"
James Smith

13

Php'de json oluşturmak için her seferinde gitmeniz gereken en iyi yol, önce ASSOCIATIVE dizideki değerleri dönüştürmektir.

Bundan sonra sadece kullanarak kodlayın json_encode($associativeArray). Bunun php'de json oluşturmanın en iyi yolu olduğunu düşünüyorum çünkü php'de sonuçtan sql sorgusu getirirken çoğu zaman fetch_assocfunction kullanarak değerler elde ediyoruz , bu da bir ilişkisel dizi döndürüyor.

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

... vb.

Daha sonra.

json_encode($associativeArray);

3

ayrıca dizi için kısa açıklama kullanabilirsiniz:

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

echo json_encode($arr);

3

Aşağıda @tdammers tarafından verilen çözümün yardımıyla bu şekilde yapabiliyorum. Aşağıdaki satır foreach döngüsünün içine yerleştirilecektir.

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

Ve sonra diziyi json kodlama fonksiyonu ile kodlayın

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

1

Sadece bu tek satırı yazmak size bir json dizisi verir,

echo json_encode($array);

Normalde json_encodebir ios veya android uygulamasından veri okumak için kullanırsınız . bu nedenle, doğru json dizisi dışında hiçbir şeyi yansıtmadığınızdan emin olun.


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

PHP'deki dil düğümüne dinamik olarak nasıl yeni bir dil eklersiniz? Teşekkürler.

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

Kodum için kullanmak üzere kaba ve basit bir jsonOBJ sınıfı oluşturdum. PHP, JavaScript / Node do gibi json işlevlerini içermez. Farklı bir şekilde yinelemeniz gerekir, ancak yardımcı olabilir.

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

Çıktı:

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

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

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

        )

)


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

Yinelemek için normal bir nesneye dönüştürün:

$myObj = $jsonObj->toArray();

Sonra:

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

Çıktılar:

TestLoc1
TestLoc2
TestLoc3

Doğrudan erişim:

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

Pratik bir örnek:

// 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();
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.