我正在尝试在 smarty 插件目录中编写一个 smarty 函数。它是一个递归函数。它在普通的 php 文件中运行良好,并且会生成一个下拉选择框。现在我想让它成为一个聪明的函数,并想从 tpl 调用它。
<?php
/*
* Smarty plugin
* ————————————————————-
* File: function.recurse_array.php
* Type: function
* Name: recurse_array
* Purpose: prints out elements of an array recursively
* ————————————————————-
*/
function smarty_function_recurse_array($arr,$depth=0, &$smarty)
{
$html = '';
foreach ( $arr as $v ) {
$html.= '<option value="' . $v['id'] . '">';
$html.= str_repeat('-', $depth);
$html.= $v['cata_name'] . '</option>' . PHP_EOL;
if ( array_key_exists('subcategories', $v) ) {
$html.= smarty_function_recurse_array($v['subcategories'], $depth+1);
}
}
return $html;
}
该文件存储在 smarty 插件目录中,并希望调用为
{recurse_array array=$myarray}
现在我对递归调用函数参数部分感到困惑
$html.= smarty_function_recurse_array($v['subcategories'], $depth+1);
它会生成一个警告
Warning: Missing argument 3 for smarty_function_recurse_array()
我该如何解决这个问题?