Подтвердить что ты не робот

Создание объекта JSON с использованием PHP

Как я могу создать или создать объект JSON этого типа с помощью 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]
    ]
}

После нескольких попыток я не нашел решение. Например, я пробовал это:

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

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

var_dump(json_encode($arr));
4b9b3361

Ответ 1

$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);

Ответ 2

Попробуйте использовать

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

Ответ 3

квадратные скобки [] в 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));

Ответ 4

Я предпочитаю следующий синтаксис, который получает желаемый результат и ясен для чтения:

$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", вы можете окружить эти значения кавычками.

Ответ 5

Выполнение чего-то подобного должно работать, если вы хотите объявить его как 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]
]}';