web-dev-qa-db-fra.com

Créer un objet JSON en utilisant PHP

Comment puis-je atteindre ou créer ce type d'objet JSON en utilisant PHP?

{ 
    "label": "Devices per year",
    "data": [
        [1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]
    ]
}

Après plusieurs tentatives, je n'ai pas trouvé la solution .

$arrayDateAndMachine = array(
    "1999"=>3.0, 
    "2000"=>3.9
);   

$arr = array(
    "label" => "Devices per year", 
    "data" => $arrayDateAndMachine
);

var_dump(json_encode($arr));
21
d_raja_23
$obj = new stdClass();
$obj->label="Devices per year";
$obj->data = array(
    array('1999','3.0'),
    array('2000','3.9'),
    //and so on...
);

echo json_encode($obj);
49
V G

Essayez d'utiliser ceci

$arrayDateAndMachine = array(   array("1999","3.0"), 
                                array("2000","3.9")
                                );
6
A.M.N.Bandara

les crochets [] dans json est un tableau donc vous devez le faire comme ceci

<?php

$arrayDateAndMachine = array( 
    array(1999, 3.0), 
    array(2000, 3.9),
);

$arr = array("label" => "Devices per year", 
             "data" => $arrayDateAndMachine);

var_dump(json_encode($arr));
4
adam187

Je préfère la syntaxe suivante qui donne le résultat souhaité et qui se lit clairement:

$ar = array(
            "label" => "Devices per years",
            "data" => array(array(1999, 3.0), array(2000, 3.9) )
        );

var_dump(json_encode($ar));

La seule différence est que dans la sortie "3.0" est rendu par "3". Si vous avez besoin du ".0" final, vous pouvez entourer ces valeurs de guillemets.

0
Nik

Faire quelque chose comme ça devrait marcher si vous voulez le déclarer en JSON uniquement et non en utilisant json_encode. Cela élimine également le besoin de déclarer plusieurs variables pour chacun des tableaux à l'intérieur. Mais ce ne serait une solution viable que si le contenu du tableau pour les données est fini.

$json_string = '{ 
"label": "Devices per year",
"data": [
    [1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]
]}';
0
surrealcoder