Multi SQL Group by to JSON兼容形式


Multi SQL-Group by to JSON compatible form

我有一个通用的SQL查询生成器,它为我提供了具有以下列的统一表:

Name, Name2, Amount

查询以GROUP BY Name2, Name结束。

现在,我想让它适合转换成具有以下格式塔的JSON:

{dim2: Name2, data: [{label: Name, y: Amount},{label: Name, y: Amount},{label: Name, y: Amount},...]},
{dim2: Name2, data: [{label: Name, y: Amount},{label: Name, y: Amount},{label: Name, y: Amount},...]},
{dim2: Name2, data: [{label: Name, y: Amount},{label: Name, y: Amount},{label: Name, y: Amount},...]},
{dim2: Name2, data: [{label: Name, y: Amount},{label: Name, y: Amount},{label: Name, y: Amount},...]},
...

到目前为止,我做了这个:

while($result = mysqli_fetch_array($results))
    {
    if(!isset($return[$result['Name2']]))
        $return[$result['Name2']] = array();
    $return[$result['Name2']][] =
        array(
            'Label' => $result['Name'],
            'y'  =>  $result['Anzahl']
        );
}
$filestring = json_encode($return, JSON_NUMERIC_CHECK);

这行不通。一整天都在做这件事真的很烦人,我真的很感激现在的帮助,提前谢谢!!!

更新:

以下是迄今为止它的计算示例:

[{"dim2":"Consumer Entertainment","data":{"Label":"Entertainment","y":1}},
{"dim2":"Digital Life","data":{"Label":"Electronic Devices","y":1}},
{"dim2":"Digital Life","data":{"Label":"Entertainment","y":1}},
{"dim2":"Digital Life","data":{"Label":"Financial Services","y":2}},
{"dim2":"Digital Life","data":{"Label":"IT","y":2}},
{"dim2":"Digital Life","data":{"Label":"Media & Publishing","y":1}},
{"dim2":"Digital Life","data":{"Label":"Transportation & Mobility","y":1}},
{"dim2":"Healthy Life","data":{"Label":"Fashion & Accessories","y":1}},
...]

我想要:

[{"dim2":"Consumer Entertainment","data":[{"Label":"Entertainment","y":1}]},
{"dim2":"Digital Life","data":[{"Label":"Electronic Devices","y":1},
{"Label":"Entertainment","y":1},
{"Label":"Financial Services","y":2},
{"Label":"IT","y":2},
{"Label":"Media & Publishing","y":1},
{"Label":"Transportation & Mobility","y":1}]},
{"dim2":"Healthy Life","data":[{"Label":"Fashion & Accessories","y":1}]},
...]

依此类推

现在更容易理解了:)

    $ar = array('Label'=>'Entertainment', 'y'=>1);
    $q[]=array('dim2'=>'Consumer Entertainment', 'data'=>array($ar));
    $ar = array('Label'=>'Electrodivices', 'y'=>1);
    $q[]=array('dim2'=>'Digital Life', 'data'=>array($ar));
    $ar = array('Label'=>'Entertainment', 'y'=>2);
    $q[]=array('dim2'=>'Digital Life', 'data'=>array($ar));
    echo json_encode($q);

它发出

〔{"dim2":"消费娱乐","数据":〔{"Label":"娱乐","y":1}〕},

{"dim2":"数字生活","数据":〔{"Label":"Electrodivices","y":1}〕},

{"dim2":"数字生活","数据":〔{"标签":"娱乐","y":2}〕}〕

所以,也许你应该试着写一些类似的东西

$return[$result['Name2']][] =
    array(array(
        'Label' => $result['Name'],
        'y'  =>  $result['Anzahl']
    ));

它看起来多么愚蠢。可能是它不明白它在拿一个数组?:P