0

I have array and want to grouping array with _level and _parent and then _id will sorted so the output will displaying:

array(
   '163' => array (
               "desc" => "master array",
               "_id" => 163,
               "_parent" => null,
               "_level" => 1,
           ),     
   '172' => array (
               "desc" => "sub array",
               "_id" => 172,
               "_parent" => 163,
               "_level" => 2,
            ),
    '167' => array (
               "desc" => "sub array from 172",
                "_id" => 167,
                "_parent" => 172,
                "_level" => 3,
             ),         
     '200' => array (
                "desc" => "sub array",
                "_id" => 200,
                "_parent" => 163,
                "_level" => 2,
             ),    
      '165' => array (
                "desc" => "sub array from 200",
                "_id" => 165,
                "_parent" => 200,
                "_level" => 3,
             ),
      );

How to possible to get this output, I tried with usort and create group of array but still not get my expecting output.

1 Answers1

0
<?php
$myArray = array(
'163' => array (
           "desc" => "master array",
           "_id" => 163,
           "_parent" => null,
           "_level" => 1,
       ),      
'172' => array (
           "desc" => "sub array",
           "_id" => 172,
           "_parent" => 163,
           "_level" => 2,
        ),
'167' => array (
           "desc" => "sub array from 172",
            "_id" => 167,
            "_parent" => 172,
            "_level" => 3,
         ),         
 '200' => array (
            "desc" => "sub array",
            "_id" => 200,
            "_parent" => 163,
            "_level" => 2,
         ),     
  '165' => array (
            "desc" => "sub array from 200",
            "_id" => 165,
            "_parent" => 200,
            "_level" => 3,
         ),
  );

usort($myArray, function($a, $b) {
return ($a['_level'] <=> $b['_id']);
 });

foreach($myArray as $array)
echo $array['desc']."<br>";

Output:

master array
sub array
sub array from 172
sub array
sub array from 200

Anuj Shrestha
  • 966
  • 6
  • 18