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