来自平面 MySQL 查询结果的 PHP 嵌套数组

标签 php mysql arrays json

我需要使用 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/

相关文章:

使用 ruby​​ FFI 在 ruby​​ 中创建静态数组类

php - $this->Auth->identify();在 cakephp 3.2 中返回 false

php - 云计算 - PHP 和 MySQL

php - 如何在Linux中设置权限/var/www以允许PHP-Apache自动覆盖

mysql - Sequelize - 嵌套 'include' 语句中的 Where 子句确实在 Node 中正确返回结果

javascript - 如何在javascript中过滤和添加剩余的obj

PHP - 使用 Ajax 刷新 While 循环数据

php - SQL - PHP foreach 变量 ID 外循环

mysql - 内部联接?用户 ID 与其他用户 ID 的两个表连接

javascript - 将新数组插入二维数组