从昨天开始一直在努力,今天终于接近实现它了。
问题
我的PHP脚本挂起,我的意思是它似乎循环无限,导致脚本挂起。他们在数据库中只有11条记录。
此函数遍历从generate_module函数传递的数据数组,并生成菜单和子菜单
function module_keys($array = array(), $modules_parent = 0){
echo '<ul class="nav navbar-nav side-nav">';
foreach($array as $item){
echo '<li>';
echo '<a>';
echo $item->modules_name;
echo '</a>';
module_keys($array, $item->modules_id);
echo '</li>';
}
echo '</ul>';
}
此函数查询数据库并将结果存储在数组中,然后传递给module_keys以生成菜单和子菜单。
function generate_module(){
global $db;
$array = array();
$sql = "SELECT * FROM module";
$query = $db->SELECT($sql);
$array = $db->ROWS();
module_keys($array, $modules_parent = 0);
}
这是数据库结构
答案 0 :(得分:1)
问题在于:
echo '</a>';
module_keys($array, $item->modules_id);
echo '</li>';
}
对modules数组的第二次调用是将原始数组传递给module_keys函数,导致它永远循环。存储子菜单项的数组中的位置,因为您需要将其传递给第二个函数调用。
您真正需要做的是获取每个子菜单项并将它们分配给原始数组。
function generate_module(){
global $db;
$array = array();
$sql = "SELECT * FROM module";
$query = $db->SELECT($sql);
$array = $db->ROWS();
//iterate over the menu items and get each of the child menu items
//add them into the original array then pass that
$newArray = array();
foreach($array as $menuItem) {
$submenu = //some additional query to collect the data
$temp = array();
$temp = $menuItem;
$temp['submenu'] = $submenu;
}
module_keys($newArray, $modules_parent = 0);
}
然后你需要确保module_keys中的函数调用传递子数组元素,以便可以构造子菜单。
像:
module_keys($item['submenu'], $item->modules_id);
我希望这会有所帮助
请注意 我已经使用了数组,但看起来你正在使用对象,你可能需要将我建议的内容转换为一个对象,这样它看起来就像你正在做的那样