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

时间:2016-01-26 20:48:18

标签: php function if-statement

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

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 .  ')';
        }

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

3 个答案:

答案 0 :(得分:1)

没有。 $ forumIds在函数参数中设置为零,但如果有人调用该函数但没有为该参数显式设置值,则该零仅应用于$ forumIds。

答案 1 :(得分:1)

代码

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

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

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

答案 2 :(得分:1)

如果未指定其他内容,则此功能的默认值。这意味着如果在调用函数时没有输入任何内容,它将默认为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