Php 如何在smarty中调用递归函数?
我正在传递索引文件中的Php 如何在smarty中调用递归函数?,php,recursion,smarty,Php,Recursion,Smarty,我正在传递索引文件中的$p数组。它必须工作,但它没有给我任何东西,因为它是一个递归函数,它返回一个数组而不是打印的嵌套uls;如何解决此问题?问题 $Smarty->register_function()和{make_menu parent_id=$p.menu_bilder_data}导致使用($params,&$Smarty)调用该函数 其中$params= {make_menu parent_id=$P.menu_bilder_data} 这不是函数所期望的数据结构 解决方案 您可以在不
$p
数组。它必须工作,但它没有给我任何东西,因为它是一个递归函数,它返回一个数组而不是打印的嵌套uls;如何解决此问题?问题
$Smarty->register_function()和{make_menu parent_id=$p.menu_bilder_data}导致使用($params,&$Smarty)调用该函数其中$params=
{make_menu parent_id=$P.menu_bilder_data}
这不是函数所期望的数据结构
解决方案
您可以在不使用“register\u function”的情况下调用该函数
管道“|”将传递$p['menu_bilder_data']作为函数的第一个参数。并且“@”使管道通过阵列。如果没有“@”,将为数组中的所有元素调用函数
只是小费
将参数从$parent(一个数组)更改为$parent_id,所有菜单数据都可以从全局$menu获得
{$P.menu_bilder_data|@make_menu}
我把你的问题整理了一下,但我对最后一段不是很确定,你能再检查一下我没有把它搞砸吗?
array(
'parent_id' => array(
0 => array(
1 => > "menu item 1",
)
{$P.menu_bilder_data|@make_menu}
function make_menu($parent_id)
{
global $menu;
if (!isset($menu[$parent_id])) {
return;
}
$nodes = $menu[$parent_id];
echo '<ul>';
foreach($nodes as $menu_id => $menu_name)
{
echo '<li>'.$menu_name ;
make_menu($menu_id) ;
echo '</li>';
}
echo '</ul>';
}
{0|make_menu}