php - 递归函数 : Call php function itself

标签 php function call self-reference

我只是想确保我做对了,这不会造成任何冲突。

我有一个函数可以自行调用,是否需要您的批准?

<?php

function determine($the_array){
    foreach ($the_array as $key => $value) {
        switch ($key) {
            case 'in':
                    echo $value;
                break;

            case 'out':
                    echo $value;
                break;

            case 'level':
                    echo '<ul>';
                    determine($value);
                    echo '</ul>';
                break;

        }
    }

}

这是数组:

$the_array = array(
    'in' => '<li>Simple IN</li>',
    'out' => '<li>Simple OUT</li>',
    'level' => array(
            'in' => '<li>Simple IN 2</li>',
            'out' => '<li>Simple OUT 2</li>',
            'level' => array(
                'in' => '<li>Simple IN 3</li>',
                'out' => '<li>Simple OUT 3</li>'
            ),
        ),
);

这是最后的初始化:

echo '<ul>';
determine($the_array);
echo '</ul>';

结果正是我想要的,效果很好,但我不知道这是否是一个好的做法。

最佳答案

递归函数没问题 - 但如果您不确定自己知道自己在做什么,则很危险。如果一个函数有任何可能会在递归循环中结束(它不断地反复调用自己),您将超时、耗尽内存或导致僵尸末日。

将递归调用想象成一把非常非常锋利的刀 - 在经验丰富的厨师手中,它是天作之合,在洗碗机手中,它就像是失去了手指等待发生。

PHP 试图表现得很好,默认情况下将递归深度限制为 100(尽管可以更改)但是对于几乎所有情况,如果您的递归深度达到 100,则事故已经发生并且 PHP 通过停止任何反应来使用react其他行人免于误入车流。 :)

关于php - 递归函数 : Call php function itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634775/

相关文章:

php - MySQL - 在 PHP 中批量重命名所有行

php - 参数 1 已传递,必须是数组类型,给定字符串

php - 不能在写入上下文中使用方法返回值;不知道从这里去哪里

php - ajax调用php脚本没有错误没有记录

c - 数组中的数组

r - 从函数调用中提取函数调用名称

javascript - 如何将先前声明的函数作为值包含在对象构造函数的键值对中?

javascript - 如何获取 JavaScript 函数内的函数名称?

c++ - 有没有办法不等待 system() 命令完成? (在三)

javascript - 使用 .apply( ) 并传递相同的实例作为上下文是否有意义?