2016-10-06 3 views
0

Мне нужно построить метод column, который может вызываться с разными типами аргументов, например, здесь.Функция вызова с разными типами аргументов в php

  ->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

вы можете Asign значение по умолчанию в function function like function coloumn ($ a = null, & b = null, $ c = null, $ d = null) {} –

+0

Что вы подразумеваете под параметром - ['kind', 'style']? –

+1

Я думаю, он хочет, чтобы этот параметр мог быть массивом. @ SanjayKumarNS –

ответ

0

Если вы имеете в виду [ «вид», «стиль»] как массив, то попробуйте следующее:

<?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); 

?> 
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); 
    } 
} 

Смотрите пример 13 на http://php.net/manual/en/functions.arguments.php

При использовании более ранней версии PHP, то ответ Санджай Кумар N S будет делать это.

0

Вы можете использовать func_get_args() на теле вашей функции, как это:

function callMe() { 
    dd(func_get_args()); 
} 

Кроме того, если это зависит от кол-аргументы, которые вы можете использовать func_num_args()

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

Смежные вопросы