加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 计算调用递归函数的次数

发布时间:2020-12-13 22:14:51 所属栏目:PHP教程 来源:网络整理
导读:我需要知道在函数内调用递归函数的次数.这是我的功能: function structure($x) {$qry = mysql_query("SELECT `parent_id` FROM `categories` WHERE `categories_id`=$x");$result = mysql_fetch_assoc($qry);$cat = $result['parent_id'];if($cat !=0) { st
我需要知道在函数内调用递归函数的次数.这是我的功能:

function structure($x) {
$qry = mysql_query("SELECT `parent_id` FROM `categories` WHERE `categories_id`=$x");
$result = mysql_fetch_assoc($qry);
$cat = $result['parent_id'];
if($cat !=0) {
    structure($cat);
}
echo $cat.' >';
}

我试过添加一个计数器,例如$i = 0,然后是$i,但每次调用函数时,它当然会恢复到$i = 0.我试过添加数组,并计算数组,但当然每次调用函数时都必须设置一个新数组$i = array().

我认为可行的一种方法是,如果我在函数外部设置数组或计数器,但我不知道是否可以在函数外部的函数中调用变量.

关于如何在函数外调用变量的任何想法,甚至是计算函数调用次数的更好方法?

解决方法

选项1:通过引用传入变量

function structure($cat,&$counter) {
    $counter++;
    ...
}

structure('foo',$counter);

echo $counter;

选项2:使用静态变量

function structure($cat) {
    static $counter = 0;
    echo ++$counter;
    ...
}

选项3:使用全局变量(不,不!)

$counter = 0;

function structure($cat) {
    global $counter;
    $counter++;
    ...
}

选项4:使用闭包

$counter = 0;

$structure = function ($cat) use (&$counter) {
    $counter++;
    ...
}

$structure('foo');
echo $counter;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读