fork download
  1. <?php
  2. $temp = array(
  3. array('id' => 1, 'parent' => 0, 'name' => 'first'),
  4. array('id' => 2, 'parent' => 1, 'name' => 'second'),
  5. array('id' => 3, 'parent' =>1, 'name' => 'three'),
  6. );
  7.  
  8. function getBreadcrumbsArray($temp)
  9. {
  10. foreach ($temp as $item) {
  11. $temp_i[$item['id']] = array(
  12. 'parent' => $item['parent'],
  13. 'name' => $item['name'],
  14. );
  15. }
  16.  
  17. foreach ($temp as $item) {
  18. $breadcrumbs[] = array(
  19. 'id' => $item['id'],
  20. 'name' =>getBreadcrumbs($temp_i, $item['id'])
  21. );
  22. }
  23.  
  24. return $breadcrumbs;
  25. }
  26.  
  27.  
  28. function getBreadcrumbs($data_array, $id, $breadcrumbs = array())
  29. {
  30. $breadcrumbs[] = $data_array[$id]['name'];
  31.  
  32. if( $data_array[$id]['parent'] == 0 )
  33. {
  34. return array_reverse($breadcrumbs);
  35. }
  36. else
  37. {
  38. return getBreadcrumbs($data_array, $data_array[$id]['parent'], $breadcrumbs);
  39. }
  40. }
  41.  
  42. $breadcrumbs = getBreadcrumbsArray($temp);
  43. print_r($breadcrumbs);
  44. ?>
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Array
                (
                    [0] => first
                )

        )

    [1] => Array
        (
            [id] => 2
            [name] => Array
                (
                    [0] => first
                    [1] => second
                )

        )

    [2] => Array
        (
            [id] => 3
            [name] => Array
                (
                    [0] => first
                    [1] => three
                )

        )

)