2016-05-05 2 views
0

В моем приложении PHP получить результаты из базы данных. После обработки результатов нужно преобразовать результаты, как показано ниже, используя ЕогеаспВставка значений внутри многомерного массива

Array 
(

[1] => Array -----> This is intent 1, this key indicates all intent values which is equal to 1, should belongs to here. 

    (
     [0] => Array 
      (
       [name] => A 
       [indent] => 1 
      ) 

     [1] => Array 
      (
       [name] => B 
       [indent] => 1 
      ) 

    ) 

[2] => Array 
    (
     [0] => Array 
      (
       [name] => B 
       [indent] => 2 
      ) 

     [1] => Array 
      (
       [name] => A 
       [indent] => 2 
      ) 

    ) 

[3] => Array 
    (
     [0] => Array 
      (
       [name] => A 
       [indent] => 3 

      ) 

    ) 
) 

что у меня есть некоторые намерения значение общие, общие намерения значения сохраняются в массиве, как массива («1» => массив (массив [0 ], массив [1]));.

То, что я пытался это

foreach($results as $data){ 
     $root_array[$data['intent']] = array($data); 
} 

Это заменит старый массив и вставить последнее пристальное значение, которое является общим.

я получаю результат, как показано ниже, цель 1 и намерение 2 заменяются последними данными

Array 
(

[1] => Array 

(


    [0] => Array 
     (
      [name] => B 
      [indent] => 1 
     ) 

) 

[2] => Array 
(

    [0] => Array 
     (
      [name] => A 
      [indent] => 2 
     ) 

) 

[3] => Array 
(
    [0] => Array 
     (
      [name] => A 
      [indent] => 3 

     ) 

) 
) 

ответ

2

В цикле вы должны проверить, если текущий абзац был инициализирован. Если нет, то создайте его, иначе просто добавьте к нему новые данные.

foreach($results as $data) { 
    if (!isset($root_array[$data['indent']])) { 
     $root_array[$data['indent']] = array($data); 
    } else { 
     $root_array[$data['indent']][] = $data; 
    } 
} 
+1

Большое спасибо за ваш ответ. – Vini

+1

Добро пожаловать! Нет проблем! Когда будешь готов :) –

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