2017-07-17 37 views
0

這個問題JSON對象來自我發現這裏的帖子:與數組頭

DataTables Multiple Tables from Multiple JSON Arrays

我想知道生成以下JSON的最簡單和最好的方式。我可以看到模式是'JSON對象 - >數組標題 - >數組 - > JSON對象',但我不知道如何在mySQLi查詢結果中通過PHP執行此操作。我想有一個MySQL表有「政策」和「服務」列,因此查詢可能看起來像:

Select name, id, score, type from myTable where type = 'policies' and 
type = 'services' 

而結果會回來的東西,如:

name  id  score type 
    A   1  0  policies 
    B   2  0  services 

但再怎麼我會採取該查詢並在PHP中生成這個JSON?

{ 
"Policies": [ 
{ 
    "name": "A", 
    "id": "1", 
    "score": "0" 
} 
], 
"Services": [ 
{ 
    "name": "B", 
    "id": "2", 
    "score": "0" 
} 
] 
} 

感謝您的幫助!

+2

可能的重複[如何從mysqli結果創建正確的json?](https://stackoverflow.com/questions/16817243/how-can-i-build-a-correct-json-from-mysqli - 結果) – Fabien

回答

1

首先創建新的空數組。
然後,通過迭代的結果,並正確的子陣列中添加:

$new = []; 

foreach ($result as $item) { 
    // Uppercase the first character 
    $type = ucfirst($item['type']); 

    if (!isset($new[$type])) { 
     // This type doesn't exist in the new array yet, let's create it. 
     $new[$type] = []; 
    } 

    // Add the item 
    $new[$type][] = $item; 
} 

// Output it as json 
echo json_encode($new, JSON_PRETTY_PRINT); 

如果新類型被添加到數據庫中的上述代碼也將工作。

PS。 JSON_PRETTY_PRINT參數只是爲了讓json字符串在開發時更具可讀性。當一切看起來不錯時,你可以刪除它。

+0

謝謝!對不起,延遲響應,但這似乎運作良好。 – tomish