Ответ 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);
{
"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]
]}';