本文整理汇总了PHP中gpOutput::MenuReduce_Sub方法的典型用法代码示例。如果您正苦于以下问题:PHP gpOutput::MenuReduce_Sub方法的具体用法?PHP gpOutput::MenuReduce_Sub怎么用?PHP gpOutput::MenuReduce_Sub使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gpOutput
的用法示例。
在下文中一共展示了gpOutput::MenuReduce_Sub方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: MenuReduce_Expand
static function MenuReduce_Expand($menu, $expand_level, $curr_title_key, $top_level)
{
$result_menu = array();
$submenu = array();
//if $top_level is set, we need to take it into consideration
$expand_level = max($expand_level, $top_level);
//titles higher than the $expand_level
$good_titles = array();
foreach ($menu as $title_key => $level) {
if ($level < $expand_level) {
$good_titles[$title_key] = $level;
}
}
if (isset($menu[$curr_title_key])) {
$curr_level = $menu[$curr_title_key];
$good_titles[$curr_title_key] = $menu[$curr_title_key];
//titles below selected
// cannot use $submenu because $foundTitle may require titles above the $submenu threshold
$foundTitle = false;
foreach ($menu as $title_key => $level) {
if ($title_key == $curr_title_key) {
$foundTitle = true;
continue;
}
if (!$foundTitle) {
continue;
}
if ($curr_level + 1 == $level) {
$good_titles[$title_key] = $level;
} elseif ($curr_level < $level) {
continue;
} else {
break;
}
}
//reduce the menu to the current group
$submenu = gpOutput::MenuReduce_Group($menu, $curr_title_key, $expand_level, $curr_level);
//message('group: ('.count($submenu).') '.showArray($submenu));
// titles even-with selected title within group
$even_temp = array();
$even_group = false;
foreach ($submenu as $title_key => $level) {
if ($title_key == $curr_title_key) {
$even_group = true;
$good_titles = $good_titles + $even_temp;
continue;
}
if ($level < $curr_level) {
if ($even_group) {
$even_group = false;
//done
} else {
$even_temp = array();
//reset
}
}
if ($level == $curr_level) {
if ($even_group) {
$good_titles[$title_key] = $level;
} else {
$even_temp[$title_key] = $level;
}
}
}
// titles above selected title, deeper than $expand_level, and within the group
gpOutput::MenuReduce_Sub($good_titles, $submenu, $curr_title_key, $expand_level, $curr_level);
gpOutput::MenuReduce_Sub($good_titles, array_reverse($submenu), $curr_title_key, $expand_level, $curr_level);
}
//rebuild $good_titles in order
// array_intersect_assoc() would be useful here, it's php4.3+ and there's no indication if the order of the first argument is preserved
foreach ($menu as $title => $level) {
if (isset($good_titles[$title])) {
$result_menu[$title] = $level;
}
}
return $result_menu;
}