2016-01-14 3 views
-2
<?php 
$array = array(
       array('ID'=>1,'PARENTID'=>0), 
       array('ID'=>2,'PARENTID'=>0), 
       array('ID'=>3,'PARENTID'=>1), 
       array('ID'=>4,'PARENTID'=>1), 
       array('ID'=>5,'PARENTID'=>3) 
       ); 
?> 

мне нужно сгруппировать выше и массив в нечто вроде ниже,Рекурсивный Groupin массива

$array = array(
       array(
        'ID'=>1, 
        'PARENTID'=0, 
        'CHILD'=> array(
            array(
             'ID'=>3, 
             'PARENTID'=>1, 
             'CHILD'=> array( 
              array('ID'=>5,'PARENTID'=>3) 
                ) 
            ), 
            array('ID'=>4,'PARENTID'=>1) 
           ) 
       ) 
      ); 

Можно ли это сделать. Спасибо ..

ответ

0

Это код, который вам нужен. Ответьте, если я ошибаюсь :)

<?php 
$array = array(array('ID'=>1,'PARENTID'=>0),array('ID'=>2,'PARENTID'=>1),array('ID'=>3,'PARENTID'=>2),array('ID'=>4,'PARENTID'=>3),array('ID'=>5,'PARENTID'=>4)); 

echo "Initial Array: \n<br />\n<br />"; 
print_r($array); 

$array=array_reverse($array); 
$new_arr=array(); 
foreach ($array as $arr){ 
    if(count($new_arr)==0){ 
     $new_arr=$arr; 
    }else{ 
     $arr['CHILD'][]=$new_arr; 
     $new_arr=$arr; 
    } 
} 
echo "\n<br />\n<br />Output Array: \n<br />\n<br />"; 
print_r($new_arr); 

$array1 = array('ID'=>1,'PARENTID'=>0,'CHILD'=>array(
     array('ID'=>2,'PARENTID'=>1,'CHILD'=>array(
     array('ID'=>3,'PARENTID'=>2,'CHILD'=>array(
     array('ID'=>4,'PARENTID'=>3,'CHILD'=>array(
     array('ID'=>5,'PARENTID'=>4))))))))); 

echo "\n<br />\n<br />Output You wanted: \n<br />\n<br />"; 
print_r($array1); 
+0

похоже, что вы не понимаете, в чем вопрос. Речь идет не о заполнении линейных массивов. Вам необходимо выполнить итерацию по начальному массиву с учетом иерархии – RomanPerekhrest