2016-10-05 2 views
-1

Упование вы можете помочь мне с этим. Потому что я пытаюсь переупорядочить их, но мне нужно сначала, чтобы быть на одном уровне массива. От ассоциативного массива до одного массива.Как сделать все массивы (включая ассоциативный массив) до одного уровня массива с помощью php?

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

Хорошо теперь массив не должен быть в этом многоуровневый (ассоциативного) массива вместо этого он будет выглядеть следующим образом:

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

Я не знаю, как будет, что возможно в наиболее эффективна без использования слишком большого объема памяти, что повлияет на скорость с использованием Php Codeigniter. Благодаря!

[UPDATE # 1] вот код, который я попробовал, но порядок отличается

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

И это выход для этого не удалось attemp ...

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

[NAME] => спутник должен быть на последнем массиве не на 4 ([3] => Array)

UPDATE # 2:

чувствовать себя плохо о понижающих голосах ... если этот вопрос или проблема не является полезным на вашем конце

+0

Не уверен, что то, что вы пытались сделать до сих пор. – RiggsFolly

+1

Как вы создаете массив? Возможно, это просто изменить. –

+0

@RiggsПожалуйста, проверьте обновление # 1 для кода, который я попробовал. –

ответ

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; 
} 
?> 

 Смежные вопросы

  • Нет связанных вопросов^_^