2017-05-12 6 views
0

Ich habe ein Problem mein hierarchisches Array wie folgt zu transformieren:PHP verschachteltes Array in flache Array konvertieren

array(
[0]=> 
    array(3) { 
    ["id"]=> 
    int(2353011010) 
    ["name"]=> 
    string(17) "LEDER ACCESSOIRES" 
    ["order"]=> 
    int(15) 
    } 
[1]=> 
    array(3) { 
    ["id"]=> 
    int(2371475010) 
    ["name"]=> 
    string(15) "SPORT AUFKLEBER" 
    ["order"]=> 
    int(25) 
    } 
[2]=> 
    array(4) { 
    ["id"]=> 
    int(2563635010) 
    ["name"]=> 
    string(17) "KENNZEICHENHALTER" 
    ["order"]=> 
    int(10) 
    ["children"]=> 
    array(6) { 
     [0]=> 
     array(4) { 
     ["id"]=> 
     int(3854259010) 
     ["name"]=> 
     string(9) "EDELSTAHL" 
     ["order"]=> 
     int(92) 
     ["children"]=> 
     array(2) { 
      [0]=> 
      array(3) { 
      ["id"]=> 
      int(20878056010) 
      ["name"]=> 
      string(5) "test1" 
      ["order"]=> 
      int(1) 
      } 
     } 
     } 
     [1]=> 
     array(3) { 
     ["id"]=> 
     int(3854260010) 
     ["name"]=> 
     string(5) "CHROM" 
     ["order"]=> 
     int(91) 
     } 
    } 
[3]=> 
    array(4) { 
    ["id"]=> 
    int(19754330010) 
    ["name"]=> 
    string(30) "SCHALTMANSCHETTEN CARBON OPTIK" 
    ["order"]=> 
    int(3) 
    } 
} 
) 

in einer flachen derjenigediejenigedasjenige wie folgt aus:

array(
[0]=> 
    array(3) { 
     ["id"]=> 
     int(2353011010) 
     ["name"]=> 
     string(17) "LEDER ACCESSOIRES" 
     ["order"]=> 
     int(15) 
    } 
[1]=> 
    array(3) { 
     ["id"]=> 
     int(2371475010) 
     ["name"]=> 
     string(15) "SPORT AUFKLEBER" 
     ["order"]=> 
     int(25) 
    } 
[2]=> 
    array(3) { 
     ["id"]=> 
     int(2563635010) 
     ["name"]=> 
     string(17) "KENNZEICHENHALTER" 
     ["order"]=> 
     int(10) 
    } 
[3]=> 
    array(4) { 
     ["id"]=> 
     int(3854259010) 
     ["name"]=> 
     string(9) "EDELSTAHL" 
     ["order"]=> 
     int(92), 
     ["parentId"]=> 2563635010 
    } 
[4]=> 
    array(4) { 
     ["id"]=> 
     int(20878056010) 
     ["name"]=> 
     string(5) "test1" 
     ["order"]=> 
     int(1), 
     ["parentId"]=> 2563635010 
    } 
[5]=> 
    array(4) { 
     ["id"]=> 
     int(3854260010) 
     ["name"]=> 
     string(5) "CHROM" 
     ["order"]=> 
     int(91), 
     ["parentId"]=> 2563635010 
    } 
[6]=> 
    array(4) { 
    ["id"]=> 
    int(19754330010) 
    ["name"]=> 
    string(30) "SCHALTMANSCHETTEN CARBON OPTIK" 
    ["order"]=> 
    int(3) 
} 
) 

Die Kinder antities sollte entfernt werden und Jedes untergeordnete Element sollte eine parentId-Entität der ID höherer Ebene erhalten. Ich brauche diese Lösung für die Übertragung in DB. Jetzt

thx

+0

Können Sie den JSON Ihres Eingangsarrays teilen? –

+0

Sie können dies überprüfen: http://stackoverflow.com/questions/6785355/convert-multidimensional-array-into-single-array Sie finden Ihre Antwort dort –

+0

@SahilGulati Das ursprüngliche Array ist zu lang, aber hier ein Teil codiert in JSON: {"id": 2371475010, "Name": "SPORT AUFKLEBER", "Auftrag": 25}, {"id": 2563635010, "Name": "KENNZEICHENHALTER", "Auftrag": 10, " children ": [{" id ": 3854259010," Name ":" EDELSTAHL "," Reihenfolge ": 92," Kinder ": [{" id ": 20878056010," name ":" test1 "," order ": 1 }, {"id": 20878057010, "name": "test2", "bestellung": 2}]}, {"id": 3854260010, "name": "CHROM", "order": 91}, {" ID ": 3854261010," Name ":" CARBON "," Bestellung ": 90}, – Joeker

Antwort

0

, ich habe eine „vorübergehende“ Methode zu erstellen, die für mich funktioniert, ist aber noch flexibel einsetzbar:

function recursive($categories) { 

    foreach ($categories as $value) { 
     $result[$value->id]['id'] = $value->id; 
     $result[$value->id]['name'] = $value->name; 
     $result[$value->id]['order'] = $value->order; 
     $result[$value->id]['parentId'] = 0; 

     if(isset($value->children)) { 
      $parentId = $value->id; 

      foreach($value->children as $value2) { 
       $result[$value2->id]['id'] = $value2->id; 
       $result[$value2->id]['name'] = $value2->name; 
       $result[$value2->id]['parentId'] = $parentId; 

       if(isset($value2->children)) { 
        $parentId = $value2->id; 

        foreach($value2->children as $value3) { 
         $result[$value3->id]['id'] = $value3->id; 
         $result[$value3->id]['name'] = $value3->name; 
         $result[$value3->id]['parentId'] = $parentId; 
        } 
       } 
      } 
     } 
    } 

    return $result; 
} 

Hat jemand eine rekursive Lösung für diese Methode wissen?

Verwandte Themen