Comment créer un tableau pour JSON en utilisant PHP?


Réponses:


154

Facile à presser au citron: 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);
?>

Il y a un article andyrusterholz at g-m-a-i-l dot c-o-msur la page susmentionnée qui peut également gérer des tableaux imbriqués complexes (si c'est votre truc).


2
Dang, mon pote, tu as été instantané sur cette réponse =). J'étais enthousiasmé par la question facile =)
Calvin Froedge

2
J'ai ce code while ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ('regione' => $ row ["regione"], 'totale' => $ row ["prezzi"]); } print (json_encode (% contrôle)); mais retun {"regione": "Puglia", "totale": "5.15"} not [{..}, {..}]
Mimmo

2
Ajoutez 1 pour la référence citron. :-)
ban-geoengineering

Je l'ai fait mais la réponse que j'obtiens en utilisant la fonction var_dumb est la suivante. Comment puis-je me débarrasser de string (59)? string (59) "[{" result ":" success "}, {" message ":" Données mises à jour! "}]"
James Smith

115

Utilisez le natif de PHP json_encode, comme ceci:

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

echo json_encode($arr);
?>

Mise à jour : pour répondre à votre question dans le commentaire. Vous le faites comme ceci:

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

2
Excusez-moi mais si je veux {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

41

Simple: créez simplement un tableau PHP (imbriqué) et appelez- json_encodele. Les tableaux numériques se traduisent en listes JSON ( []), les tableaux associatifs et les objets PHP se traduisent en objets ( {}). Exemple:

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

Vous donne:

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

1
Excusez-moi mais si je veux {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo

2
Relisez mon message. Si vous voulez quelque chose à traduire en un objet JSON, faites-en un tableau associatif en PHP (où les clés sont des chaînes). Si vous voulez qu'il se traduise en une liste JSON, faites-en un tableau simple (avec des clés entières implicites). La valeur de chaque élément du tableau peut à son tour être un tableau, ce que vous voulez.
tdammers

Merci cela a également répondu à ma question.
Shawn Wernig

Je l'ai fait mais la réponse que j'obtiens en utilisant la fonction var_dumb est la suivante. Comment puis-je me débarrasser de string (59)? string (59) "[{" result ":" success "}, {" message ":" Données mises à jour! "}]"
James Smith

13

La meilleure façon de procéder à chaque fois pour créer json en php est de d'abord convertir les valeurs dans le tableau ASSOCIATIVE.

Après cela, encodez simplement en utilisant json_encode($associativeArray). Je pense que c'est le meilleur moyen de créer json en php parce que chaque fois que nous récupérons une requête SQL sous forme de résultat en php, la plupart du temps, nous obtenons des valeurs en utilisant fetch_assocfunction, qui retournent également un tableau associatif.

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

... etc.

Après ça.

json_encode($associativeArray);

3

également pour le tableau, vous pouvez utiliser une annotation courte:

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

echo json_encode($arr);

3

C'est ainsi que je peux faire avec l'aide de la solution donnée par @tdammers ci-dessous. La ligne suivante sera placée à l'intérieur de la boucle foreach.

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

Et puis encodez le tableau avec la fonction d'encodage json

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

1

Le simple fait de taper cette seule ligne vous donnerait un tableau json,

echo json_encode($array);

Normalement, vous utilisez json_encodepour lire les données d'une application iOS ou Android. alors assurez-vous de ne pas faire écho à autre chose que le tableau json précis.


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

Comment ajouteriez-vous dynamiquement une nouvelle langue au nœud des langues en PHP? Merci.

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

J'ai créé une classe jsonOBJ simple et brute à utiliser pour mon code. PHP n'inclut pas les fonctions json comme le font JavaScript / Node. Vous devez itérer différemment, mais cela peut être utile.

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

Sortira:

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

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

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

        )

)


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

Pour itérer, convertissez en un objet normal:

$myObj = $jsonObj->toArray();

Ensuite:

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

Les sorties:

TestLoc1
TestLoc2
TestLoc3

Accès direct:

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

Un exemple pratique:

// 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();
    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.