Php 帮助向函数传递参数
当我只想传递tag参数,让其他参数默认时,我该如何编写 我试过了,但没用Php 帮助向函数传递参数,php,function,tags,Php,Function,Tags,当我只想传递tag参数,让其他参数默认时,我该如何编写 我试过了,但没用 function get_tags_by_criteria($gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%", $tag="") { 这在PHP中是不可能的。这在PHP中是不可能的。将标记参数放在第一位: get_tags_by_criteria("", "", "", "
function get_tags_by_criteria($gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%", $tag="") {
这在PHP中是不可能的。这在PHP中是不可能的。将标记参数放在第一位:
get_tags_by_criteria("", "", "", "", "", "", computer);
这样称呼它:
function get_tags_by_criteria($tag="", $gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%")
将标记参数放在第一位:
get_tags_by_criteria("", "", "", "", "", "", computer);
这样称呼它:
function get_tags_by_criteria($tag="", $gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%")
不幸的是,您不能这样做-未指定的可选参数始终必须位于函数参数列表的末尾。相反,您可以对不希望指定的参数使用NULL,然后让函数检查参数是否为NULL,并将其指定为默认值。不幸的是,您不能这样做-未指定的可选参数始终必须位于函数参数列表的末尾。相反,您可以对不希望指定的参数使用NULL,然后让函数检查参数是否为NULL,并将其指定为默认值。PHP中没有传递命名参数。一般来说,如果您有超过4个参数,其中许多参数是可选的,那么您可能需要考虑使用数组或对象来代替:
get_tags_by_criteria(computer);
您可以使用对象来显式设置允许的参数。PHP中没有传递命名参数。一般来说,如果您有超过4个参数,其中许多参数是可选的,那么您可能需要考虑使用数组或对象来代替:
get_tags_by_criteria(computer);
您可以使用对象来显式设置允许的参数。您可以使用关联数组模拟命名参数:
function get_tags_by_criteria($args) {
...
}
get_tags_by_criteria(array('gender' => 'M', 'tag' => 'php'));
然后打电话
function my_function($options)
{
extract($options);
}
这一点,再加上健壮的检查和函数中的默认值表,对我来说非常有用
缺点:没有phpDoc约定来记录参数,您的IDE将无法在键入时向您显示可用参数。您必须将可用参数输入到@desc
块中,根据您的IDE,该块可能好看,也可能不好看
一种解决方法是声明函数中的所有参数,但使除第一个参数外的所有参数都是可选的。第一个可以是包含值的关联数组。您可以使用关联数组模拟命名参数:
function get_tags_by_criteria($args) {
...
}
get_tags_by_criteria(array('gender' => 'M', 'tag' => 'php'));
然后打电话
function my_function($options)
{
extract($options);
}
这一点,再加上健壮的检查和函数中的默认值表,对我来说非常有用
缺点:没有phpDoc约定来记录参数,您的IDE将无法在键入时向您显示可用参数。您必须将可用参数输入到@desc
块中,根据您的IDE,该块可能好看,也可能不好看
一种解决方法是声明函数中的所有参数,但使除第一个参数外的所有参数都是可选的。第一个可以是包含值的关联数组。CakePHP框架通常使用关联数组来指定一组选项。它甚至允许您指定单个参数或关联数组。请参见模型类上的示例 以下是我试图使您的功能更灵活的尝试:
my_function(array("parameter1" => "value1", "parameter2" => "value2"));
CakePHP框架通常使用关联数组来指定一组选项。它甚至允许您指定单个参数或关联数组。请参见模型类上的示例
以下是我试图使您的功能更灵活的尝试:
my_function(array("parameter1" => "value1", "parameter2" => "value2"));
我应该如何做才能获得相同的效果,即选择要传递的参数和要使用默认值的参数?我不想为此创建7个不同的函数。很抱歉,创建7个不同的函数是唯一的选择,不过OOP可能会对您有所帮助。我应该如何做才能获得相同的效果,选择要传递的参数和要使用默认值的参数?我不想为此创建7个不同的函数。很抱歉,创建7个不同的函数是唯一的选择,OOP可能会在这里帮助您。回答很好,null或任何其他值。任何随机值都可以工作,是的,但我倾向于选择NULL,因为它不太可能与您可能希望传递的任何实际非默认值重叠。:)回答得很好,空值或任何其他值。任何随机值都可以,是的,但我倾向于使用空值,因为它不太可能与您可能希望传递的任何实际非默认值重叠。:)您可以在此处阅读有关extract
的更多信息:您可以在此处阅读有关extract
的更多信息: