Wie erstelle ich ein Array für JSON mit PHP?


Antworten:


154

Easy Peasy Lemon Squeezy: 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);
?>

Auf andyrusterholz at g-m-a-i-l dot c-o-mder oben genannten Seite gibt es einen Beitrag von, der auch komplexe verschachtelte Arrays verarbeiten kann (wenn das Ihr Ding ist).


2
Dang, Homie, du warst sofort bei dieser Antwort =). Ich war begeistert von der einfachen Frage =)
Calvin Froedge

2
Ich habe diesen Code während ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ('regione' => $ row ["regione"], 'totale' => $ row ["prezzi"]); } print (json_encode (% control)); aber retun {"regione": "Puglia", "totale": "5.15"} nicht [{..}, {..}]
Mimmo

2
Fügen Sie 1 als Zitronenreferenz hinzu. :-)
Ban-Geoengineering

Ich habe das getan, aber die Antwort, die ich mit der Funktion var_dumb erhalte, ist die folgende. Wie kann ich den String (59) loswerden? Zeichenfolge (59) "[{" Ergebnis ":" Erfolg "}, {" Nachricht ":" Daten aktualisiert! "}]"
James Smith

115

Verwenden Sie das native PHP json_encodewie folgt:

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

echo json_encode($arr);
?>

Update : Um Ihre Frage im Kommentar zu beantworten. Du machst es so:

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

2
Entschuldigung, aber wenn ich will {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

41

Einfach: Erstellen Sie einfach ein (verschachteltes) PHP-Array und rufen Sie json_encodees auf. Numerische Arrays werden in JSON-Listen ( []) übersetzt, assoziative Arrays und PHP-Objekte in Objekte ( {}). Beispiel:

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

Gibt Ihnen:

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

1
Entschuldigung, aber wenn ich will {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

2
Lies meinen Beitrag noch einmal. Wenn Sie möchten, dass etwas in ein JSON-Objekt übersetzt wird, machen Sie es in PHP zu einem assoziativen Array (wobei die Schlüssel Zeichenfolgen sind). Wenn Sie möchten, dass es in eine JSON-Liste übersetzt wird, machen Sie es zu einem einfachen Array (mit impliziten Ganzzahlschlüsseln). Der Wert jedes Array-Elements kann wiederum ein Array sein, was Sie möchten.
tdammers

Danke das hat auch meine Frage beantwortet.
Shawn Wernig

Ich habe das getan, aber die Antwort, die ich mit der Funktion var_dumb erhalte, ist die folgende. Wie kann ich den String (59) loswerden? Zeichenfolge (59) "[{" Ergebnis ":" Erfolg "}, {" Nachricht ":" Daten aktualisiert! "}]"
James Smith

13

Der beste Weg, den Sie jedes Mal gehen sollten, um json in PHP zu erstellen, besteht darin, zuerst Werte in das ASSOCIATIVE-Array zu konvertieren.

Danach einfach mit codieren json_encode($associativeArray). Ich denke, es ist der beste Weg, um json in PHP zu erstellen, denn wann immer wir Ergebnisse aus SQL-Abfragen in PHP abrufen, haben wir die meiste Zeit Werte mit fetch_assocFunktion erhalten, die auch ein assoziatives Array zurückgeben.

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

... etc.

Nachdem.

json_encode($associativeArray);

3

Auch für Arrays können Sie kurze Anmerkungen verwenden:

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

echo json_encode($arr);

3

So kann ich mit Hilfe der von @tdammers unten angegebenen Lösung vorgehen. Die folgende Zeile wird in jede Schleife eingefügt.

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

Und dann codieren Sie das Array mit der JSON-Codierungsfunktion

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

1

Wenn Sie nur diese einzelne Zeile eingeben, erhalten Sie ein JSON-Array.

echo json_encode($array);

Normalerweise json_encodelesen Sie Daten von einer iOS- oder Android-App. Stellen Sie daher sicher, dass Sie nur das genaue JSON-Array wiedergeben.


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

Wie würden Sie dem Sprachknoten in PHP dynamisch eine neue Sprache hinzufügen? Vielen Dank.

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

Ich habe eine grobe und einfache jsonOBJ-Klasse erstellt, die ich für meinen Code verwenden kann. PHP enthält keine JSON-Funktionen wie JavaScript / Node. Sie müssen anders iterieren, können aber hilfreich sein.

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

Wird ausgegeben:

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

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

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

        )

)


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

Konvertieren Sie zum Iterieren in ein normales Objekt:

$myObj = $jsonObj->toArray();

Dann:

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

Ausgänge:

TestLoc1
TestLoc2
TestLoc3

Direkter Zugriff:

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

Ein praktisches Beispiel:

// 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();
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.