2016-10-05 2 views
-1

Ich hoffe, Sie können mir dabei helfen. Weil ich versuche, sie neu zu ordnen, aber ich muss zuerst auf einer einzigen Ebene des Arrays sein. Vom assoziativen Array zum einzelnen Array.Wie erstellt man alle Arrays (einschließlich assoziativem Array) mit php auf einzelne Array-Ebenen?

$MY_ASSOC_ARRAY 
Array 
(
    [0] => Array 
     (
      [MAIN_ID] => 1 
      [ORDER] => 1 
      [NAME] => Animal 
      [PARENT_ID] => 0 
      [childs] => Array 
       (
        [0] => Array 
         (
          [MAIN_ID] => 4 
          [ORDER] => 4 
          [NAME] => doggie 
          [PARENT_ID] => 1 
          [childs] => Array 
           (
            [0] => Array 
             (
              [MAIN_ID] => 18 
              [ORDER] => 18 
              [NAME] => hunting 
              [PARENT_ID] => 4 
              [childs] => Array 
               (
                [0] => Array 
                 (
                  [MAIN_ID] => 21 
                  [ORDER] => 21 
                  [NAME] => setter 
                  [PARENT_ID] => 18 
                 ) 

                [1] => Array 
                 (
                  [MAIN_ID] => 22 
                  [ORDER] => 22 
                  [NAME] => pointer 
                  [PARENT_ID] => 18 
                 ) 

               ) 
             ) 

            [1] => Array 
             (
              [MAIN_ID] => 19 
              [ORDER] => 19 
              [NAME] => companion 
              [PARENT_ID] => 4 
             ) 
           ) 
         ) 
       ) 
     ) 
) 

Okay jetzt das Array nicht statt in diesem Multi-Level (assoziativen) Array sein sollte wie folgt aussehen:

Array 
(
    [0] => Array 
     (
      [MAIN_ID] => 1 
      [ORDER] => 1 
      [NAME] => Animal 
      [PARENT_ID] => 0 
     ) 

    [1] => Array 
     (
      [MAIN_ID] => 4 
      [ORDER] => 4 
      [NAME] => doggie 
      [PARENT_ID] => 1 
     ) 

    [2] => Array 
     (
      [MAIN_ID] => 18 
      [ORDER] => 18 
      [NAME] => hunting 
      [PARENT_ID] => 4 
     ) 

    [3] => Array 
     (
      [MAIN_ID] => 21 
      [ORDER] => 21 
      [NAME] => setter 
      [PARENT_ID] => 18 
     ) 

    [4] => Array 
     (
      [MAIN_ID] => 22 
      [ORDER] => 22 
      [NAME] => pointer 
      [PARENT_ID] => 18 
     ) 

    [5] => Array 
     (
      [MAIN_ID] => 19 
      [ORDER] => 19 
      [NAME] => companion 
      [PARENT_ID] => 4 
     ) 
) 

Ich bin nicht sicher,

, wie das in den meisten effecient möglich sein wird, Weg, ohne zu viel Speicher zu verwenden, der die Geschwindigkeit mit dem Gebrauch von Php Codeigniter beeinflußt. Vielen Dank!

[UPDATE # 1] hier den Code, den ich versucht, aber die Reihenfolge ist anders

foreach($tree as $key => $value) { 
    $single[] = $value; 
} 

Und das ist der Ausgang für diese attemp gescheitert ...

Array 
(
    [0] => Array 
     (
      [MAIN_ID] => 1 
      [ORDER] => 1 
      [NAME] => Animal 
      [PARENT_ID] => 0 
     ) 

    [1] => Array 
     (
      [MAIN_ID] => 4 
      [ORDER] => 4 
      [NAME] => doggie 
      [PARENT_ID] => 1 
     ) 

    [2] => Array 
     (
      [MAIN_ID] => 18 
      [ORDER] => 18 
      [NAME] => hunting 
      [PARENT_ID] => 4 
     ) 

    [3] => Array 
     (
      [MAIN_ID] => 19 
      [ORDER] => 19 
      [NAME] => companion 
      [PARENT_ID] => 4 

     ) 

    [4] => Array 
     (
      [MAIN_ID] => 21 
      [ORDER] => 21 
      [NAME] => setter 
      [PARENT_ID] => 18 
     ) 

    [5] => Array 
     (
      [MAIN_ID] => 22 
      [ORDER] => 22 
      [NAME] => pointer 
      [PARENT_ID] => 18 
     ) 
) 

Die [NAME] => Begleiter sollten in der letzten Reihe, die nicht am 4. ([3] => Array)

UPDATE # 2:

fühlen sich schlecht über die unten Stimmen ... wenn diese Frage oder ein Problem an Ihrem Ende nicht sinnvoll ist

+0

Nicht sicher, was haben Sie bisher versucht zu tun. – RiggsFolly

+1

Wie generieren Sie das Array? Vielleicht ist es möglich, das einfach zu ändern. –

+0

@RiggsFolly überprüfen Sie bitte das Update # 1 für den Code, den ich ausprobiert habe. –

Antwort

1
<?php 
    $array = Array(
    0 => Array 
     (
      'MAIN_ID' => 1, 
      'ORDER' => 1, 
      'NAME' => 'Animal', 
      'PARENT_ID' => 0, 
      'childs' => Array 
       (
        0 => Array 
         (
          'MAIN_ID' => 4, 
          'ORDER' => 4, 
          'NAME' => 'doggie', 
          'PARENT_ID' => 1, 
          'childs' => Array 
           (
            0 => Array 
             (
              'MAIN_ID' => 18, 
              'ORDER' => 18, 
              'NAME' => 'hunting', 
              'PARENT_ID' => 4, 
              'childs' => Array 
               (
                0 => Array 
                 (
                  'MAIN_ID' => 21, 
                  'ORDER' => 21, 
                  'NAME' => 'setter', 
                  'PARENT_ID' => 18, 
                 ), 

                1 => Array 
                 (
                  'MAIN_ID' => 22, 
                  'ORDER' => 22, 
                  'NAME' => 'pointer', 
                  'PARENT_ID' => 18, 
                 ) 

               ) 
             ), 

            1 => Array 
             (
              'MAIN_ID' => 19, 
              'ORDER' => 19, 
              'NAME' => 'companion', 
              'PARENT_ID' => 4, 
             ) 
           ) 
         ) 
       ) 
     ) 
); 
$out = []; 
$out = generateArray($array, $out); 
print_r($out); 

function generateArray($in, $out){ 
    foreach($in as $value){ 
     $childs = false; 
     if(isset($value['childs'])){ 
      $childs = $value['childs']; 
      unset($value['childs']); 
     } 
     $out[] = $value; 
     if($childs) 
      $out = generateArray($childs, $out); 
    } 
    return $out; 
} 
?> 
Verwandte Themen