我正在尝试处理某人的代码并遇到了这个问题。
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。