2017-10-15 126 views
0

我無法將我的mysql錶轉換爲json。 我有一個表,顯示僱員那樣的層次結構:將層次結構提取爲json

該表是一個員工表 ID,名字,姓氏,PARENTID

所以現在我想通過數據抽取成查詢一個多層次的json對象來模擬顯示僱員與他們的主管。

我希望有人能幫助我。

+0

你要求至少3個問題中的一個。 1.是否通過MySQL獲取數據並使用php工作2.如何遍歷結果3.如何將php數組/對象轉換爲json('json_encode()'btw。)。請澄清你的需求,告訴我們你到目前爲止所嘗試過的。 –

+0

所以我沒有任何麻煩,使用json_encode或做簡單或聯合MySQL查詢。所以從技術方面來說,我對所有需要做的動作有基本的瞭解。 問題是,我想不出一種方式來通過數據查詢,以便我得到多維數組,然後我可以轉換成json – BeatzCraft

回答

0

假設您已經從數據庫獲取數據,下面的解決方案將爲您提供所需的信息。

要走的道路是通過遞歸

php sandbox online

<?php 
function buildTree(array &$elements, $parentId = 0) { 
    $branch = array(); 

    foreach ($elements as $element) { 
     if ($element['parentid'] == $parentId) { 

      // recursion: 
      $children = buildTree($elements, $element['id']); 
      if ($children) { 
       $element['children'] = $children; 
      } 
      $branch[$element['id']] = $element; 
      unset($elements[$element['id']]); 
     } 
    } 
    return $branch; 
} 
$rows = [ 
    ['id' => 1, 'firstname' => 'john1', 'lastname' => 'doe', 'parentid' => 0], 
    ['id' => 2, 'firstname' => 'john2', 'lastname' => 'doe', 'parentid' => 1], 
    ['id' => 3, 'firstname' => 'john3', 'lastname' => 'doe', 'parentid' => 1], 
    ['id' => 4, 'firstname' => 'john4', 'lastname' => 'doe', 'parentid' => 0], 
    ['id' => 5, 'firstname' => 'john5', 'lastname' => 'doe', 'parentid' => 3], 
]; 

print_r(buildTree($rows)); 

和結果數組:

Array 
(
    [1] => Array 
     (
      [id] => 1 
      [firstname] => john1 
      [lastname] => doe 
      [parentid] => 0 
      [children] => Array 
       (
        [2] => Array 
         (
          [id] => 2 
          [firstname] => john2 
          [lastname] => doe 
          [parentid] => 1 
         ) 

        [3] => Array 
         (
          [id] => 3 
          [firstname] => john3 
          [lastname] => doe 
          [parentid] => 1 
          [children] => Array 
           (
            [5] => Array 
             (
              [id] => 5 
              [firstname] => john5 
              [lastname] => doe 
              [parentid] => 3 
             ) 

           ) 

         ) 

       ) 

     ) 

    [4] => Array 
     (
      [id] => 4 
      [firstname] => john4 
      [lastname] => doe 
      [parentid] => 0 
     ) 

) 

json_encode結果後,you will get

{ 
    "1": { 
     "id": 1, 
     "firstname": "john1", 
     "lastname": "doe", 
     "parentid": 0, 
     "children": { 
      "2": { 
       "id": 2, 
       "firstname": "john2", 
       "lastname": "doe", 
       "parentid": 1 
      }, 
      "3": { 
       "id": 3, 
       "firstname": "john3", 
       "lastname": "doe", 
       "parentid": 1, 
       "children": { 
        "5": { 
         "id": 5, 
         "firstname": "john5", 
         "lastname": "doe", 
         "parentid": 3 
        } 
       } 
      } 
     } 
    }, 
    "4": { 
     "id": 4, 
     "firstname": "john4", 
     "lastname": "doe", 
     "parentid": 0 
    } 
} 
+0

哦,謝謝。這正是我一直在尋找的。稍後當我回家時我會嘗試。 – BeatzCraft