PHP如何返回静态变量

发布于 2024-09-05 11:25:31 字数 663 浏览 4 评论 0原文

function build_path($cid)
{
    static $fr=array();
    $DB = new MySQLTable;
    $DB->TblName = 'shop_categories';
    $where['cat_id']['='] = $cid;
    $res = $DB->Select('cat_id,cat_name,cat_parent', $where);
    if($res !== false)
    {
        $pid = mysql_fetch_array($res);
        if($pid['cat_parent'] !== "0")
        {
           $fr[] = $pid['cat_id'];
           build_path($pid['cat_parent']);
        } else {
            $fr[] = $cid;
            $fr = array_reverse($fr);
            print_r($fr);
            return $fr;
        }
    }
}

print_r(build_path(100));

为什么 print_r 在函数中工作,但第二个 print_r 返回 NULL?

function build_path($cid)
{
    static $fr=array();
    $DB = new MySQLTable;
    $DB->TblName = 'shop_categories';
    $where['cat_id']['='] = $cid;
    $res = $DB->Select('cat_id,cat_name,cat_parent', $where);
    if($res !== false)
    {
        $pid = mysql_fetch_array($res);
        if($pid['cat_parent'] !== "0")
        {
           $fr[] = $pid['cat_id'];
           build_path($pid['cat_parent']);
        } else {
            $fr[] = $cid;
            $fr = array_reverse($fr);
            print_r($fr);
            return $fr;
        }
    }
}

print_r(build_path(100));

Why is working print_r in function, but second print_r returns NULL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

初见你 2024-09-12 11:25:31

通常,要使递归函数正常工作,您需要在调用自身时返回一些内容。

在您的第一个嵌套 if 块中尝试此操作:

return build_path($pid['cat_parent']);

Normally, for a recursive function to work, you need to return something when calling itself.

Try this in your first nested if block:

return build_path($pid['cat_parent']);
留蓝 2024-09-12 11:25:31

仅供参考,如果您使用在数据库中存储分层数据的各种方法之一,则不需要编写递归函数或对 N 个层次结构执行 N 个查询。

FYI, You wouldn't need to write a recursive function or execute N queries for N levels of hierarchy if you used one of the various methods for storing hierarchical data in a database.

神妖 2024-09-12 11:25:31

递归函数不得使用static 通过调用传递数据 - 请改用参数。

为什么你需要这一行:

if($res !== false)

??

Recursive functions must not use static to pass the data through invokes - use the arguments instead.

And why do you need this line:

if($res !== false)

??

堇年纸鸢 2024-09-12 11:25:31

使用 return build_path($pid['cat_parent']); 代替第 14 行中的 build_path($pid['cat_parent']);

Instead of build_path($pid['cat_parent']); in line 14 use return build_path($pid['cat_parent']);.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文