2012-05-29 2 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"); 

Codepad:. http://codepad.org/Dk7MD18I

+0

он отлично работает. Спасибо alot – Sam

+0

Но что я могу сделать, если аргументы являются массивами. Мне нужен каждый элемент каждого массива. – Sam

+0

@AbdusSamad Если аргумент представляет собой массив, вы можете рассматривать его как таковой и делать на нем 'foreach'. Например, если первым аргументом был массив, то с указанным выше кодом вы бы выполнили 'foreach ($ args [0] как $ 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 
    } 
} 
?>