首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何跳过函数调用中的可选参数?

如何跳过函数调用中的可选参数?
EN

Stack Overflow用户
提问于 2009-06-30 23:31:40
回答 13查看 74.9K关注 0票数 106

好吧,我完全忘记了如何在PHP中跳过参数。

假设我有:

代码语言:javascript
复制
function getData($name, $limit = '50', $page = '1') {
    ...
}

我如何调用此函数,以便中间参数采用默认值(即.'50')?

代码语言:javascript
复制
getData('some name', '', '23');

上面的说法正确吗?我好像不能让它起作用。

EN

回答 13

Stack Overflow用户

发布于 2009-06-30 23:35:09

你的帖子是正确的。

不幸的是,如果您需要在参数列表的末尾使用可选参数,则必须指定直到最后一个参数为止的所有内容。通常,如果您想要混合匹配,可以给它们提供默认值''null,如果它们是默认值,就不要在函数中使用它们。

票数 58
EN

Stack Overflow用户

发布于 2009-06-30 23:35:42

除了指定像falsenull这样的默认值之外,没有其他方法可以“跳过”参数。

由于PHP在这方面缺乏一些语法上的优势,因此您经常会看到这样的内容:

代码语言:javascript
复制
checkbox_field(array(
    'name' => 'some name',
    ....
));

正如评论中所说的,它使用数组来模拟命名参数。

这提供了最终的灵活性,但在某些情况下可能不需要。至少在大多数情况下,您可以将您认为不需要的任何内容移动到参数列表的末尾。

票数 42
EN

Stack Overflow用户

发布于 2015-05-18 20:25:21

跳过可选参数没有什么变化,但是为了语法正确并能够为我想跳过的参数指定NULL,下面是我如何做到这一点的:

代码语言:javascript
复制
define('DEFAULT_DATA_LIMIT', '50');
define('DEFAULT_DATA_PAGE', '1');

/**
 * getData
 * get a page of data 
 *
 * Parameters:
 *     name - (required) the name of data to obtain
 *     limit - (optional) send NULL to get the default limit: 50
 *     page - (optional) send NULL to get the default page: 1
 * Returns:
 *     a page of data as an array
 */

function getData($name, $limit = NULL, $page = NULL) {
    $limit = ($limit===NULL) ? DEFAULT_DATA_LIMIT : $limit;
    $page = ($page===NULL) ? DEFAULT_DATA_PAGE : $page;
    ...
}

这可以这样调用:getData('some name',NULL,'23');和任何将来调用该函数的人都不需要记住每次的默认值或为它们声明的常量。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1066625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档