我正在尝试处理某些代码并遇到这个问题。
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)不会没用吗?
答案 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
。