Функции с переменным числом аргументов

JVN

Guest
Функции с переменным числом аргументов

Есть функция с переменным числом аргументов -
PHP:
array_intersect(array array1, array array2........)
Как передать функции массив такого вида:

PHP:
array( array(1, 2), array(2,3) )
не используя eval()

Т.е. имеется массив аргументов функции. Размер этого массива зависит от ситуации - потому такой гемор.
 

trent

Developer
Re: Функции с переменным числом аргументов

ты скажи для чего это надо... возможно есть другой спобоб это реализовать... или, например, почему бы в фунцию не подать сам array... еще есть параметр в фунцию, который можно опускать function foo ($var1, $var2 = "1"), при вызове второй параметр можно не указывать... он ее возмет как указанно в $var2...
 

Unregistered

Guest
array_intersect - стандартная функция.
Необходимо найти пересечение массивов.
Можно сделать это и руками, но заманчиво использовать стандартную функцию, да и работать это будет быстрее.
 

Crazy

Developer
Открываем в документации раздел "XXXIV. Function Handling functions" и идем работать...
 

Matteo

Guest
Хм, может быть, я чего то не понимаю, но что мешает передать массив массивов? Самое простое решение.
 

JVN

Guest
Хм, может быть, я чего то не понимаю, но что мешает передать массив массивов? Самое простое решение.
Эта функция встроенная. Ей можно передать только то, что прописано в ее прототипе !!
А иначе и проблем бы не было никаких.....
 

JVN

Guest
С call_user_func_array() я рано обрадовался - она не работает со встроенными функциями.

А решение найдено до смешного простое :)

PHP:
function ArrayIntersect($a){
	if (sizeof($a) == 1){return $a;}
	$p = array_intersect($a[0], $a[1]);
	array_shift($a);
	$a[0] = $p;
	return $this->ArrayIntersect($a);
}
где $a - массив массивов, пересечение которых нужно найти.
 
Сверху