1
view-button 23
Obyektdən ağacvari strukturun hazırlanması

Yazı haqqında xəbər ver

Əgər yazıda qeyri etik və ya təhqir xarakerli sözlər varsa bizə xəbər verməyiniz rica olunur.

Obyektdən ağacvari strukturun hazırlanması

elvinhuseynov

Bir çox layihələrdə Verilənlər Bazasından gələn məlumat bir səviyyəli olduğundan həmən məlumatı ağacvari strukturda göstərmək olmur.

Bunun üçün xüsusi funksiya yazmaq lazımdır. Nümumə olaraq aşağıdakı kodlara fikir verək.

Bazadan gələn məlumat:

array(8) {
    [0]=>
    object(stdClass)#142 (2) {
      ["menuid"]=> int(12)
      ["parentid"]=> int(0)
    }
    [1]=>
    object(stdClass)#135 (2) {
      ["menuid"]=> int(13)
      ["parentid"]=> int(12)
    }
    [2]=>
    object(stdClass)#139 (2) {
      ["menuid"]=> int(14)
      ["parentid"]=> int(13)
    }
    [3]=>
    object(stdClass)#144 (2) {
      ["menuid"]=> int(17)
      ["parentid"]=> int(13)
    }

Obyekti ağacvari struktura çevirən kod:

public function getChildren($data){
        $childs = array();

        foreach ($data as $item) {
            $childs[$item->parentid][] = $item;
        }

        foreach ($data as $item) {
            if (isset($childs[$item->menuid])) {
                $item->children = $childs[$item->menuid];
            }
        }

        return (!empty($childs[0])) ? $childs[0] : false;
    }

Funksiyanın qaytardığı nəticə:

array(2) {
    [0]=>
    object(stdClass)#142 (3) {
      ["menuid"]=> int(12)
      ["parentid"]=> int(0)
      ["children"]=>
      array(1) {
        [0]=>
        object(stdClass)#135 (3) {
          ["menuid"]=> int(13)
          ["parentid"]=> int(12)
          ["children"]=>
          array(2) {
            [0]=>
            object(stdClass)#139 (2) {
              ["menuid"]=> int(14)
              ["parentid"]=> int(13)
            }
            [1]=>
            object(stdClass)#144 (2) {
              ["menuid"]=>int(17)
              ["parentid"]=> int(13)
            }
          }
        }
      }
    } 
  }

Elvin Huseynov

CodeX layihəsinin təsisçisi. PM

Rəylər

0 comments
Rəy yazan olmayıb
Rəy yazmaq üçün lütfən sayta Telegram hesabınızla daxil olun