我需要构建一个方法column
,它可以使用不同的参数类型调用,例如这里的情况。
->column('herald','style')
->column('herald','style','styleText')
->column('herald',['kind','style'])
->column('herald',['kind','style'],['kindText','styleText'])
->column('item',['kind','style'],false)
->column('item',['kind','style'],['kindText','styleText'],false)
->column('herald_style','style',false)
->column('herald_style','style','styleText',false)
我只是希望函数可以被清楚地调用,像Java那样覆盖,并且我已经尝试使用func_get_args()
来逐个处理参数,但它看起来更糟糕了..
这有什么办法吗?
答案 0 :(得分:1)
在函数中接受可变数量的参数?
如果使用PHP 5.6+,您可以使用splat运算符...
将任何提交的参数放入数组中。
function column(...$args) {
// this is how many arguments were submitted
$number_of_arguments = count($args);
// iterate through them if you want...
foreach($args as $arg) {
// ...and process the arguments one by one
do_something_with($arg);
}
}
参见http://php.net/manual/en/functions.arguments.php
上的示例13如果使用早期版本的PHP,那么Sanjay Kumar N S的答案就是这样做的。
答案 1 :(得分:0)
如果你的意思是['kind','style']作为一个数组,那么试试这个:
<?php
function column()
{
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . (!is_array($arg_list[$i]) ? $arg_list[$i]: ' an array ' ). "<br />";
}
echo "<br /><br />";
}
column('herald','style');
column('herald','style');
column('herald','style','styleText');
column('herald',array('kind','style'));
column('herald',array('kind','style'),array('kindText','styleText'));
column('item',array('kind','style'),false);
column('item',array('kind','style'),array('kindText','styleText'),false);
column('herald_style','style',false);
column('herald_style','style','styleText',false);
?>
答案 2 :(得分:0)
您可以在函数正文中使用x, y, z = 55, 90, 87
if x%2 == 1 and y%2 == 1 and z%2 == 1:
if x > y and x > z:
print (x)
elif y > z and y >x:
print (y)
else:
print (z)
else:
print ('none of them are odd')
,如下所示:
func_get_args()
此外,如果它取决于参数的数量,您可以使用function callMe() {
dd(func_get_args());
}