2017-10-15 131 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