【问题标题】:How to Create Menu From Array如何从数组创建菜单
【发布时间】:2015-11-26 04:05:32
【问题描述】:

我有一个这样的数据库数组。我想将数组放入这样的菜单中。

  • 设置
    • 菜单类别
      • 菜单分类视图
      • 组视图
    • 存款
    • 组菜单
      • 组菜单视图
    • 菜单
      • 菜单视图

我一直在尝试,但到目前为止,每次尝试都失败了

array(
(int) 0 => array(
    'MenuCategory' => array(
        'name' => 'Setting'
    ),
    'Menu' => array(
        'name' => 'Menu Category',
        'url' => '/menu_categories/adding',
        'parent_id' => null
    ),
    'Site' => array(
        'id' => (int) 1
    ),
    'Sub' => array(
        'name' => 'Menu Category View',
        'url' => '/menu_categories/view'
    )
),
(int) 1 => array(
    'MenuCategory' => array(
        'name' => 'Setting'
    ),
    'Menu' => array(
        'name' => 'Group',
        'url' => '/groups/adding',
        'parent_id' => null
    ),
    'Site' => array(
        'id' => (int) 1
    ),
    'Sub' => array(
        'name' => 'Group View',
        'url' => '/groups/view'
    )
),
(int) 2 => array(
    'MenuCategory' => array(
        'name' => 'Setting'
    ),
    'Menu' => array(
        'name' => 'Deposits',
        'url' => '/Deposits/requestTiket',
        'parent_id' => null
    ),
    'Site' => array(
        'id' => (int) 1
    ),
    'Sub' => array(
        'name' => null,
        'url' => null
    )
),
(int) 3 => array(
    'MenuCategory' => array(
        'name' => 'Setting'
    ),
    'Menu' => array(
        'name' => 'Group Menus',
        'url' => '/group_menus/adding',
        'parent_id' => null
    ),
    'Site' => array(
        'id' => (int) 1
    ),
    'Sub' => array(
        'name' => 'Group View',
        'url' => '/group_menus/view'
    )
),
(int) 4 => array(
    'MenuCategory' => array(
        'name' => 'Setting'
    ),
    'Menu' => array(
        'name' => 'Menu',
        'url' => '/menus/adding',
        'parent_id' => null
    ),
    'Site' => array(
        'id' => (int) 1
    ),
    'Sub' => array(
        'name' => 'Menu View',
        'url' => '/menus/view'
    )
)

);

谁能帮助我? ?

【问题讨论】:

  • 我有一个问题,如果Group 有两个子菜单,那么数组将如何? 1) 它是另一个数组,Menu 作为“组”,Sub 有信息 (OR) 2) 仅在 Sub 中,有多个数组,如 'Sub'=>array(array( 'name' => ...),array( 'name' => ...))

标签: php recursion multidimensional-array menu


【解决方案1】:

您可以简单地使用三个嵌套的foreach() 循环遍历它,如下所示:

$arr = // your array;
echo "<ul>";
foreach($arr as $setting => $nested) {
    echo "<li>$setting<ul>";
    foreach($nested as $category => $nested2) {
        echo "<li>$category</li><ul>";
        foreach($nested2 as $view) {
            echo "<li>$view</li>";
        }
        echo "</ul></li>";
    }
    echo "</ul></li>";
}
echo "</ul>";

唯一的问题是它可能会打印出不必要的(空的)&lt;ul&gt;s,并且&lt;ul&gt;s 默认为不同的项目符号类型(虽然很容易用 CSS 修复)。

PHP SandboxIdeone 进行测试。这是提供的输出:

&lt;ul&gt;&lt;li&gt;setting&lt;ul&gt;&lt;li&gt;menu category&lt;/li&gt;&lt;ul&gt;&lt;li&gt;menu category view&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;group&lt;/li&gt;&lt;ul&gt;&lt;li&gt;group view&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;deposits&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;group menu&lt;/li&gt;&lt;ul&gt;&lt;li&gt;group menu array&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;menu&lt;/li&gt;&lt;ul&gt;&lt;li&gt;menu view&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;

【讨论】:

  • 虽然这会给他一个快速的解决方案,但实际上这并不是最好的解决方案。您的解决方案仍然可以优化。
【解决方案2】:
        import java.util.Scanner;

        public class ARRAY123 {

        static int Yaki2=0;
        static String ff, ll;
        static Scanner Yaki = new Scanner (System.in);
        public static void main (String[]a){

//String [] Names = new Array (5);
        char menuInput;
        char retry;
        String [] names;
        names = new String [5];

        names [0] = "";
        names [1] = "";
        names [2] = "";
        names [3] = "";     
        names [4] = "";


        do {
        System.out.println("Names in the Array");
        System.out.println("Choose what you want to do with the Array:");
        System.out.println("[A]ADD");
        System.out.println("[B]EDIT");
        System.out.println("[C]DELETE");
        System.out.println("[D]SORT");
        System.out.println("[E]SEARCH");

        menuInput = Yaki.next().charAt(0);
        switch (menuInput) {
        case 'a':
        case 'A':
        System.out.println("Add Elements to the Array");
        System.out.print("Input whatever element you want to add:");
        add(names);
        break;
        case 'b':
        case 'B':
        System.out.println("Edit an Element in the Array");
        ll = Yaki.next();
        System.out.println("Palitan mo na");
        ff = Yaki.next();
        wait 
        (ll,ff);
        break;                

        }       
        System.out.println("Would you like to do more?");
        retry = Yaki.next().charAt(0);
        }while (retry == 'Y'|| retry == 'y');

        System.out.println(names[0]);
        System.out.println(names[1]);
        System.out.println(names[2]);
        System.out.println(names[3]);
        System.out.println(names[4]);
        }

        private static void wait(String ll2, String ff2) {
            // TODO Auto-generated method stub

        }

        static void add (String a[]) {


        if (Yaki2 < a.length) {
        a[Yaki2] = Yaki.next();
        Yaki2++;}
        else 
        System.out.println("The Elements in the Array are complete, you can no longer add more");

        }

        }

【讨论】:

  • 您好,无需任何 cmets 即可阅读和理解大量代码。如果您可以附加几句话来解释您的代码的作用,那将非常有帮助。
猜你喜欢
  • 2014-01-30
  • 2016-03-29
  • 1970-01-01
  • 2017-06-13
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
相关资源
最近更新 更多