好吧,我完全忘记了如何在PHP中跳过参数。
假设我有:
function getData($name, $limit = '50', $page = '1') {
...
}
我如何调用此函数,以便中间参数采用默认值(即.'50')?
getData('some name', '', '23');
上面的说法正确吗?我好像不能让它起作用。
发布于 2009-06-30 23:35:09
你的帖子是正确的。
不幸的是,如果您需要在参数列表的末尾使用可选参数,则必须指定直到最后一个参数为止的所有内容。通常,如果您想要混合匹配,可以给它们提供默认值''
或null
,如果它们是默认值,就不要在函数中使用它们。
发布于 2009-06-30 23:35:42
除了指定像false
或null
这样的默认值之外,没有其他方法可以“跳过”参数。
由于PHP在这方面缺乏一些语法上的优势,因此您经常会看到这样的内容:
checkbox_field(array(
'name' => 'some name',
....
));
正如评论中所说的,它使用数组来模拟命名参数。
这提供了最终的灵活性,但在某些情况下可能不需要。至少在大多数情况下,您可以将您认为不需要的任何内容移动到参数列表的末尾。
发布于 2015-05-18 20:25:21
跳过可选参数没有什么变化,但是为了语法正确并能够为我想跳过的参数指定NULL,下面是我如何做到这一点的:
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');
和任何将来调用该函数的人都不需要记住每次的默认值或为它们声明的常量。
https://stackoverflow.com/questions/1066625
复制相似问题