我没有太多 PHP 经验,我想知道如何最好地在 PHP 中创建递归函数。以这个例子为例
$config = array(
"MYSQL" => array(
"SERVER" => "localhost",
"USERNAME" => "root",
"PASSWORD" => ""
),
"FOO" => "bar"
);
// Make the config global
config_parse(false, $config);
function config_parse($index, $value)
{
if(is_array($value))
{
foreach($value as $i => $e)
{
config_parse(($index ? $index . "_" : "") . $i, $e);
}
}
else
{
define($index, $value);
}
}
它做了我想要它做的事情,但是当我以这种方式初始化递归函数时(传递 false 作为初始索引并在函数中检查它),我觉得我正在“黑客攻击”/编写糟糕的代码
解决此问题的一种方法可能是反转输入参数的顺序,这意味着当数组作为值传递时不会访问索引值。
另一种方法是将递归函数分为启动函数和回调函数。
我想知道什么是“最佳实践”,最好是基于我的示例。
感谢回复
最佳答案
对我来说,这取决于递归的复杂性。在您给出的具体示例中,我只需翻转参数并将第二个默认值设置为 null
(在这种情况下,我更喜欢 null 而不是 false)。
function config_parse($value, $index = null)
{
// your logic - id detect null with if(null === $index)
}
关于php - 如何在 PHP 中以最佳方式构造递归函数的函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113460/