这个 PHP 函数中的 if 语句不是没用的吗?


Wouldn't the if statement in this PHP function be useless?

我正在尝试处理某人的代码并遇到了这个问题。

private function getAttImages($limit, $forumIds = 0, $fidsReverse = false, $topicIds = 0, $membersIds = 0, $order = 'attach_date', $sort = 'desc', $group = null)
    {
        $fids = '';
        if ($forumIds)
        {
            $r = '';
            if ($fidsReverse)
            {
                $r = ' NOT ';
            }
            if (is_array($forumIds))
            {
                $forumIds = implode(',', $forumIds);
            }
            $fids = ' AND forums_topics.forum_id ' . $r . ' IN (' . $forumIds .  ')';
        }

功能继续到其他事情。 但是,问题是第一个 if 语句 if($forumIds) 如果每次调用此函数时都设置为 0 $forumIds,那不是没用吗?

如果未指定任何其他值,则这是此函数的默认值。这意味着,如果在调用函数时未输入任何内容,则默认为0,并且该函数基本上什么都不做。

例子:

getAttImages(5, 1)基本上将$limit设置为 1,将$forumids设置为 1。其余参数将设置为其默认值,因为未输入任何内容 ( $fidsReverse = false, $topicIds = 0, $membersIds = 0, $order = 'attach_date', $sort = 'desc', $group = null

唯一必需的参数是 limit,因为它没有默认值。因此,至少可以像这样调用该函数:

getAttImages(0);和其余部分将默认为函数中定义的值。但是,此代码不会执行任何操作,因为$forumIds将被0

No. $forumIds 在函数参数中设置为零,但该零仅在有人调用函数但没有显式设置该参数的值时才应用于$forumIds。

代码

..., $forumIds = 0, ...

正在为该变量设置默认值。调用时可以用任何值覆盖它,但如果未提供 $forumIds 的值,则默认为 0。

请参阅 PHP 文档:http://php.net/manual/en/functions.arguments.php#functions.arguments.default。