我需要使用 highcharts.com js 创建折线图。该插件需要具有以下结构的 JSON 数据:
series: [{
{
name: 'book 2',
data: [
1970, 120,
2001, 50,
2005, 180,
2014, 50
]
},
{
name: 'another book',
data: [
1970, 120,
2001, 50,
2005, 180,
2014, 50
]
}
}]
(数据只是一个例子)
我想从 MySQL 数据库中查询所需的数据。 使用 PHP 中的 meekrodb.com 库提取数据。
$results = DB::query("SELECT booktitle, EditionNr, Year FROM editions");
到目前为止的查询输出这个平面数组:
(
[0] => Array
(
[booktitle] => booktitle_a
[EditionNr] => 11
[Year] => 2012
)
[1] => Array
(
[booktitle] => booktitle_a (the same)
[EditionNr] => 12
[Year] => 2013
)
[2] => Array
(
[booktitle] => another_booktitle
[EditionNr] => 1
[Year] => 2000
)
...
顶级索引对应于查询结果的行。但是,数据输出必须是分层的。 如何将其转换为如下所示的嵌套数组?
Array
(
[name] => book_title_a
[data] => Array
(
[0] => 2012, 11 // these are the rows Year (=2012) and EditionNr (=11th edition)
[1] => 2013, 12
)
[name] => another_book_title
[data] => Array
(
[0] => 2000, 1
[1] => 2011, 2
[2] => 2012, 3
)
)
感谢您的帮助。
-安迪
最佳答案
尝试这样的事情:
$data = array();
foreach ( $rows as $row ) {
$bookTitle = $row['booktitle'];
if ( !isset( $data[$bookTitle] ) ) {
$data[$bookTitle] = array( "name" => $bookTitle, "data" => array() );
}
$data[$bookTitle]['data'][] = array( $row['Year'], $row['EditionNr'] );
}
echo json_encode( array_values( $data ) );
关于来自平面 MySQL 查询结果的 PHP 嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22894261/