2012-05-29 28 views
1

無限的爭論我只想做這樣的函數array_merge (array $array1 [, array $... ]) 或簡單的功能類似myfunc($st1, $st2, $st3, $st4, $st5, etc)函數在PHP

function make_my_merge($) { 
    ..... operation to be performed ...... 
} 
+0

參數的數量是有限的PHP(只是注意到)。 – hakre

回答

3

使用func_get_args()訪問所有參數(如數組)傳遞給函數。此外,您還可以使用func_num_args()得到的傳入所有參數計數

function make_my_merge() { 
    if (func_num_args()) { 
     $args = func_get_args(); 
     echo join(", ", $args); 
    } 
} 

// Foo, Bar 
make_my_merge("Foo", "Bar"); 

// Foo, Bar, Fizz, Buzz 
make_my_merge("Foo", "Bar", "Fizz", "Buzz"); 

鍵盤:http://codepad.org/Dk7MD18I

+0

它很好用。非常感謝 – Sam

+0

但是如果參數是數組提要,我該怎麼辦。我需要每個陣列的每個元素。 – Sam

+0

@AbdusSamad如果參數是一個數組,你可以像這樣對待它,並對它做一個'foreach'。例如,如果第一個參數是一個數組,使用上面的代碼,你會做'foreach($ args [0] as $ item)'。 – Sampson

0

使用func_get_args()

function make_my_merge() { 
    $args = func_get_args(); 

    foreach ($args as $arg) { 
    echo "Arg: $arg\n"; 
    } 

} 

可以看出,你得到所有參數傳遞通過func_get_args()函數返回給函數,該函數返回一個數組,您可以使用each遍歷每個傳遞的參數。

0

你永遠不會知道你要多少爭論......所以你不能在我opimion無限的參數定義確切的功能。但我的建議是經過2個參數的函數,一個在陣列和其它陣列本身的索引或值的數量....這是這樣的

<?php 
$arr = array('val1','val2','val3',.....); 
$count = count($arr); 
$result = your_function($count,$arr); 
?> 

你的功能應該是這樣肚裏在頂部或其他的PHP文件或類別的某處

<?php 
function your_function($count,$arr) 
{ 
    //Here you know the number of values you have in array as $count 
    //So you can use for loop or others to merge or for other operations 
    for($i=0;$i<$count;$i++) 
    { 
      //Some operation 
    } 
} 
?>