使用PHP创建JSON对象


Create JSON object using PHP

如何使用PHP实现或创建这种类型的JSON对象

{ 
    "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]
    ]
}

经过几次尝试,我都没有找到解决办法。例如,我尝试过这个:

$arrayDateAndMachine = array(
    "1999"=>3.0, 
    "2000"=>3.9
);   
$arr = array(
    "label" => "Devices per year", 
    "data" => $arrayDateAndMachine
);
var_dump(json_encode($arr));
$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);

尝试使用此

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

方括号json中的[]是数组,所以必须像一样操作

<?php
$arrayDateAndMachine = array( 
    array(1999, 3.0), 
    array(2000, 3.9),
);
$arr = array("label" => "Devices per year", 
             "data" => $arrayDateAndMachine);
var_dump(json_encode($arr));

我更喜欢以下语法,它可以获得所需的结果,而且读起来很清楚:

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

唯一的区别是输出中的"3.0"被渲染为"3"。如果您需要尾部的".0",您可以用引号将这些值括起来。

如果您只想将其声明为JSON,而不想使用JSON_encode,那么这样做应该有效。这也消除了为内部的每个数组声明多个变量的需要。但只有当数据数组的内容有限时,这才是可行的解决方案。

$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]
]}';