Header Ads

  • Breaking News

    Contoh Kasus Menu Bertingkat Tak Terbatas


    Sepriano, M.Kom - Di bawah ini saya memiliki variabel $menu. Ia adalah gabungan antara array terindeks dan array asosiatif multidimensi. Dikatakan multidimensi karena ia adalah suatu array yang memiliki array lain di dalamnya.

    Untuk penjelasan lebih lanjut silakan lihat pembahasan tentang array multidimensi.

    Silakan perhatikan kode program di bawah. Karena selanjutnya kita akan coba menampilkan semua item dari array $menu menggunakan fungsi rekursif.

    <?php
    
    $menu = [
      [
        "nama" => "Beranda"
      ],
      [
        "nama" => "Berita",
        "subMenu" => [
          [
            "nama" => "Olahraga",
            "subMenu" => [
              [
                "nama" => "Bola"
              ],
              [
                "nama" => "Bulu Tangkis"
              ]
            ]
          ],
          [
            "nama" => "Politik"
          ],
          [
            "nama" => "Manca Negara"
          ]
        ]
      ],
      [
        "nama" => "Tentang"
      ],
      [
        "nama" => "Kontak"
      ],
    ];
    

    Pertama kita buat dulu fungsi untuk menampilkan array utama.

    <?php
    
    function tampilkanMenuBertingkat (array $menu) {
      echo "<ul>";
      foreach ($menu as $key => $item) {
        echo "<li>{$item['nama']}</li>";
      }
      echo "</ul>";
    }
    

    Jika kita panggil fungsi di atas:

    <?php
    
    tampilkanMenuBertingkat($menu);
    

    Kita akan dapatkan hasil seperti ini:

    • Beranda
    • Berita
    • Tentang
    • Kontak

    Sekarang kita buat fungsi di atas menjadi rekursif dengan memanggil dirinya sendiri ketika suatu item dari menu memiliki attribut subMenu.

    <?php
    
    function tampilkanMenuBertingkat (array $menu) {
      echo "<ul>";
      foreach ($menu as $key => $item) {
        echo "<li>{$item['nama']}</li>";
    
        # periksa apakah ia memiliki atribut subMenu
        # dan apakah attribut tersebut memiliki isi
        if (@$item['subMenu'] && count($item['subMenu'])) {
          # jika ia panggil diri sendiri
          tampilkanMenuBertingkat($item['subMenu']);
        }
      }
      echo "</ul>";
    }
    

    Kita coba jalankan lagi dan… ya! Kita berhasil mendapatkan hasil seperti ini:

    • Beranda
    • Berita
      • Olahraga
        • Bola
        • Bulu Tangkis
      • Politik
      • Manca Negara
    • Tentang

    Anda bisa mengubah-ubah variabel $nama untuk mencoba apakah memang fungsi rekursif yang kita buat tersebut sudah berfungsi dengan benar.

    Tidak ada komentar

    Post Bottom Ad