2012-10-01 5 views
2

임 확인 할 수있는 방법이 있어야한다 :은 PHP 함수를 통해 배열을 전달

내가 원하는 그래서 나는이 같은 기능을 ...

callFunction("var1","var2","var3"); 

함수를 호출하는 경우 '다음 CallFunction'배열의 예에 이러한 변수를 설정합니다 :

$array[0] = "var1"; 
$array[1] = "var2"; 
$array[2] = "var3"; 

을 나는 그것을 상관없이 함수를 호출 할 때 나열되는 변수이 배열을 생성하지 싶어이 가능합니까?

+8

['func_get_args()'] (http://us.php.net/func_get_args)? – DCoder

+0

배열에 함수를 전달할 것인지, 전달하는 방법 또는 변수를 여러 개의 인수로 호출 할 수 있는지 여부는 이제 문제가됩니까? – Havelock

+1

왜'array'를 사용하지 않으시겠습니까 ??? – Baba

답변

8

당신은 단순히 다음과 같은 작업을 수행 할 수

function callFunction() { 
    $arr = func_get_args(); 
    // Do something with all the arguments 
    // e.g. $arr[0], ... 
} 

func_get_args는 함수에 전달 된 매개 변수를 반환합니다. 함수 헤더에 지정할 필요조차 없습니다.

func_num_args은 함수에 전달 된 인수의 수를 산출합니다. 나는 당신이 단순한 count(func_get_args())을 할 수 있다고 가정 할 때 왜 그런 것이 존재하는지 완전히 확신하지 못한다. 그러나 C (실제로 필요한 곳)에 있기 때문에 존재한다고 생각한다.

당신이 다시 다른 언어 기능의 종류를 보면

이, 그것은 일반적으로 Variadic Function이라고, 또는 당신이 신속하게 Google에 :)

+0

감사합니다. – George

+0

@George 당신은'return $ arg;'을 추가해야 할 것입니다. – Baba

0

필요하면 그냥 그 함수에서 func_get_args()를 반환 "변수 인수" :

function callFunction(){ 
    return func_get_args(); 
} 

$array = callFunction("var1","var2","var3","var4","var5"); 
var_dump($array); 

/*array(5) { 
    [0]=> 
    string(4) "var1" 
    [1]=> 
    string(4) "var2" 
    [2]=> 
    string(4) "var3" 
    [3]=> 
    string(4) "var4" 
    [4]=> 
    string(4) "var5" 
}*/ 
+0

'$ arg_list'를 반환하는 것에는 어떤 문제가 있습니까? – slugonamission

0

다음과 같이 함수를 호출하십시오.

callFunction(array("var1", "var2", "var3", "var4", "var5")); 

이 기능을 생성하십시오.

function callFunction($array) 
{ 
    //here you can acces your array. no matter how many variables are listed when calling the function. 
    print_r($array); 
} 
관련 문제