произвольное кол-во аргументов для array_intersect()

  • Автор темы Автор темы KFC
  • Дата начала Дата начала

KFC

Guest
произвольное кол-во аргументов для array_intersect()

можно ли передать произвольное кол-во аргументов для array_intersect() ?
 
Если ты не понял, то перевожу, фиксер тебе предложил почитать вот это:
[m]array_intersect[/m]
 
похоже прийдется на каждый его пост отвечать:
а в мануале что написано?
 
читал.

хотелось бы нечто вроде этого:
PHP:
function varArg() 
{
   return $arg_list = func_get_args();
  
} 

$b=varArg($final[0],$final[1],$final[2],$final[3],$final[4],..., $final[n]);

$full=array_intersect($b);

пока что обхожусь этим:
PHP:
if(sizeof($final)==1){$full=$final[0];}
								elseif(sizeof($final)==2){ $full=array_intersect($final[0],$final[1]);}
								elseif(sizeof($final)==3){ $full=array_intersect($final[0],$final[1],$final[2]);}
								elseif(sizeof($final)==4){ $full=array_intersect($final[0],$final[1],$final[2],$final[3]);}
 
фунция varArg() динамически генерирует аргументы на основании определенных критериев (та что выше - дана просто для демонстрации ).
Вопрос в том как их лучше скормить array_intersect() ?

-~{}~ 14.04.05 18:43:

Автор оригинала: Net Dog
[m]eval[/m]'ом если уж очень так хочется
пара цитат:
Be careful when using eval() on heavy usage sites in PHP 4.0+ as it takes vastly longer to activate due to the limitations of the Zend engine.

The Zend engine changes the PHP to a binary structure at the START of the file, and then parses it. Every time an eval is called, however, it has to reactivate the parsing procedure and convert the eval()'d code into usable binary format again.

Basically, if you eval() code, it takes as long as calling a new php page with the same code inside.
If eval() is the answer, you're almost certainly asking the
wrong question. -- Rasmus Lerdorf, BDFL of PHP
 
дело в том, что array_intersect() в моем случае вызывается довольно часто и использование eval скорее всего будет неоптимально. Другого решения у меня пока что нет, но будем думать.
 
ну используй свой 'оптимальный' вариант, по одному ИФУ на доп аргумент %)
 
IntenT,
спасибо огромное как раз то, что нужно !

вот окончательное решение:

PHP:
$full=call_user_func_array('array_intersect',$any_number_of_arrays_here);
 
Сверху