2017-10-15 2 views
0

Ich habe Probleme, meine MySQL-Tabelle in JSON. Ich habe eine Tabelle, die die Hierarchie der Mitarbeiter wie die zeigen:Extrahieren Hierarchie Struktur in JSON

Die Tabelle mit id ein Mitarbeiter Tabelle, Vorname, Nachname, ParentID

So jetzt habe ich durch die Daten abfragen möchten sie extrahieren in Ein mehrstufiges JSON-Objekt zum Simulieren zeigt die Mitarbeiter mit ihren Vorgesetzten.

Ich hoffe, dass mir jemand damit helfen kann.

+0

Sie mindestens drei Fragen in einer fragen. 1. ob man Daten über mysql bekommt und mit php daran arbeitet 2. wie man durch die Ergebnisse iteriert 3. wie man php array/object in json umwandelt ('json_encode()' btw.). Bitte erklären Sie, was Sie brauchen, zeigen Sie uns, was Sie bisher versucht haben. –

+0

So habe ich keine Probleme mit json_encode oder einfache oder gemeinsame mysql Querys. So von der technischen Seite habe ich ein grundlegendes Verständnis für alle Maßnahmen, die ich tun muss. Das Problem ist, dass ich nicht über eine Möglichkeit, durch die Daten abfragen, so dass ich das multidimensionale Array, das ich dann in JSON konvertieren kann – BeatzCraft

Antwort

0

Vorausgesetzt, Sie haben bereits Daten aus der Datenbank genommen, erhalten Sie unter Lösung, was Sie brauchen.

Der Weg darüber ist über Rekursion.

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)); 

und das resultierende Array:

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 
     ) 

) 

Nachdem Sie json_encode Ergebnis 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

Oh, ich danke Ihnen. Genau danach habe ich gesucht. Ich werde es später versuchen, wenn ich wieder zu Hause bin. – BeatzCraft