• 22-08-2022, 02:31:42
    #10
    2. sorudan başlayayım, şimdilik yayın kaydını alamıyorum. Teknik nedenlerden ötürü 3 gün sonra kayıt almaya başlayabileceğim.

    İlk sorunuzun cevabı ise temelde dizi değişkenler ve foreach döngüsünde bitiyor. Elinizdeki $footer_menus isimli çok boyutlu dizi değişkeninizi footer_menu_walk isimki fonksiyona soktuğunuz zaman, ilk satırda $children parametresini kontrol ederek işe başlıyoruz. Eğer bu bir children ise ul etiketini $string değişkenine atıyoruz, değilse boş veri atıyoruz. $footer_menus isimli dizi değişkenimiz foreach içerisine girdiğinde her iterasyonda şu kontrolleri yapıp oluşturduğumuz veriyi $string değişkenine ekliyoruz.
    1. children false ise div.col etiketini bas, true ise boş,
    2. menu iterasyonunda parent değeri 0 ise div.primary-btn bas, değilse demek ki bu bir children, o yüzden li etiketini bas,
    3. menu iterasyonunda title değerini bas,
    4. parent değeri 0 ise divi kapat.
    5. children varsa recursive olarak aynı fonksiyonu tekrar çağır, bu sefer children parametresini true gönder,
    6. menu iterasyonunda parent değeri 0'dan büyükse demek ki bu bir children, li'yi daha önceden açmıştık artık kapatabiliriz.
    7. açık olan div ve ul etiketlerini kapat ve oluşan string ifadeyi return et.

    Burada olay tüm işlemlerin sıralamasında. Bilgi seviyenizi bilmediğim için satır satır açıklamaya çalıştım. Çalışma mantığı ile ilgili sormak istediğiniz herhangi bir şey varsa sorabilirsiniz.

    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = ($children ? '<ul>' : '') .  PHP_EOL;
        foreach ($list AS $menu){
            $string .= (!$children ? '<div class="col">' : '') .  PHP_EOL;
            if($menu['parent'] == '0') {
                $string .= '<div class="primary-btn">';
            } else {
                $string .= '<li>';    
            }
              
            $string .= $menu['title'];
            if($menu['parent']== '0') {
                $string .= '</div>' . PHP_EOL;
            }
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            if($menu['parent'] != '0') {
                $string .= '</li>' . PHP_EOL;
            } 
            $string .= (!$children ? '</div>' : '') . PHP_EOL;     
        }
        $string .= (($children) ? '</ul>' : '').PHP_EOL;
         
        return $string;
    }
    echo footer_menu_walk($footer_menus,false);
    ardakarakas adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkür ederim tek sefer de çalıştı 2 soru sormak istiyorum eğer cevaplamak isterseniz;
    1-) Kodu yazdınız çok güzel ama bu kod nasıl çalışıyor?
    2-) Twitch'de yayın açtığınız zaman yayının tekrarını videolar kısmına yükler misiniz.
  • 22-08-2022, 09:00:38
    #11
    @fatihemre; Çok ama çok teşekkür ederim yardımlarınız