如何在更多孩子的PHP中自动创建菜单

时间:2013-08-09 04:42:59

标签: php pyrocms

我有5个带孩子的菜单。在第一个菜单中,我有16个孩子,第二个22个孩子,第三个10个孩子,堡垒和第五个19个孩子。

每个子菜单都有5行,这些孩子必须在这些行中精美排列。如果可能,每行中的数字相同或更多。

包含16和22个孩子的第一和第二个菜单的示例:

  • MENU1 第一排4名儿童,第3名3名儿童,第3名儿童3名,第3名儿童3名

  • MENU2 第一排5名儿童,第二排5名,第三名4名,第四名4名,第五名4名

我的问题是如何创建将在子菜单中添加子项的算法。儿童必须精美安排。如果可能,每行中的数字相同或更多。

1 个答案:

答案 0 :(得分:1)

因为我不是100%清楚你的问题中“美丽”的含义,所以我对可接受的内容做了一些假设。

以下代码最多可用于100种菜单配置。

  • 它首先尝试将项目分配到3,4,5或6行(60%的 例)
  • 然后它试图在最后一行(30%的情况下)只留下1
  • 然后它试图在最后一行(10%的情况下)只留下2

守则:

<?php

$column_range = range(3,6);

#$menu = array(16,22,10,19);
$menu = range(1,100); # showing a range of menu configurations

print_r($menu); print '<hr />';

foreach ($menu as $item){

    $beautiful = False;

    foreach($column_range as $column_width){
        if($item%$column_width==0 && $beautiful==False){
            print "$item will be beautiful if you use $column_width per row";
            print '<br />';
            $beautiful = True;
        }
    }

    if($beautiful==False){

        foreach($column_range as $column_width){
            if($item%$column_width==1 && $beautiful==False){
                print "$item is hard to make beautiful, most rows will have $column_width, however the last row will have 1 one it";
                print '<br />';
                $beautiful = True;
            }
        }
    }

    if($beautiful==False){

        foreach($column_range as $column_width){
            if($item%$column_width==2 && $beautiful==False){
                print "$item is hard to make beautiful, most rows will have $column_width, however the last row will have 2 one it";
                print '<br />';
                $beautiful = True;
            }
        }
    }

    if($beautiful==False){
        print "$item what shall i do with you";
        print '<br />';
    }

}

?>