在php中调用具有不同参数类型的函数

时间:2016-10-06 17:40:38

标签: php function laravel arguments

我需要构建一个方法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()来逐个处理参数,但它看起来更糟糕了..
这有什么办法吗?

3 个答案:

答案 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()); }

http://php.net/manual/ru/function.func-get-args.php