不会';这个PHP函数中的if语句不是无用的吗?

不会';这个PHP函数中的if语句不是无用的吗?,php,function,if-statement,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) {

我正试图在别人的代码工作,并遇到了这个

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($forumIds)不是没有用吗?

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

否。

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

代码

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

请参阅PHP文档:。

代码

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


请参阅PHP文档:。

如果未指定其他内容,则这是此函数的默认值。这意味着,如果在调用函数时未输入任何内容,则该函数将默认为
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
这是此函数的默认值,因此此代码不会执行任何操作,如果未指定其他内容。这意味着,如果在调用函数时未输入任何内容,则该函数将默认为
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

如果函数args中的该位置未传递任何内容,$forumsIds=0表示默认为0。因此,默认情况下,是的。但他们打算重写它。这样,您就可以调用函数getAttImages(2),而无需传递所有参数。请参阅forumIds的“默认参数值”部分,默认设置为0,依赖它是不安全的:)谢谢。我是php新手,所以这很有帮助。@Tim-这里有说明安全问题的文档吗?这是一种非常常见的做法(不是说我不相信你,只是我从来没有听说有人将默认的arg vals标识为安全漏洞)$forumsIds=0表示如果在函数args中的该位置没有传递任何内容,则默认为0。因此,默认情况下,是的。但他们打算重写它。这样,您就可以调用函数getAttImages(2),而无需传递所有参数。请参阅forumIds的“默认参数值”部分,默认设置为0,依赖它是不安全的:)谢谢。我是php新手,所以这很有帮助。@Tim-这里有说明安全问题的文档吗?这是一种非常常见的做法(不是说我不相信你,只是我从来没有听说有人将默认arg VAL识别为安全漏洞)