Как динамически изменять количество передаваемых в функцию переменных?

Статус
Закрыто для дальнейших ответов.

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
например в этот раз массив попался из 2х строк
Код:
sstr($str[0],$str[1]);
а теперь же у нас получилось 5 строк
Код:
sstr($str[0],$str[1],$str[2],$str[3],$str[4]);
а это та сама функция
Код:
function sstr ($str[0]=false,$str[1]=false,$str[2]=false,$str[3]=false) {
...
}
Она рассчитана только на 4 переменные, но!
в любой момент программист захочет подключить 5тую и 6ю и 7ю и т.д. строку,
в функции он их пропишет,
но он не сможет изменить механизм подключения функции и добавить ещё одну.
как можно трепать массив и в зависимости от количества строк передавать в функцию столько же переменных?
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Можно сделать так:
Код:
function ma_unc(){
  $args = func_get_args();
}
func_get_args()
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
то что выше, не приемлемо.

ладно. сам разобрался)
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Ну ты напиши как разобрался, интересно же ;)
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
Ну ты напиши как разобрался, интересно же ;)
на меня нахлынула целая череда мыслей, но ни одна она не сработала)

раскрою проблему шире. эта функция находится в классе. массив представляет собой результат експлода строки URI в среде чпу адреса. теперь каждый сегмент /s1/s2/s3/ нужно передать по отдельности в функцию. как в коде игнитере в общем)
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Код:
  $parts = expolde('/',$URI);
  call_user_func_array (array($object, 'method'), $parts );
Это надо?

UPD. чуточку ошибся, не call_user_func а call_user_func_array
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
Код:
  $parts = expolde('/',$URI);
  call_user_func_array (array($object, 'method'), $parts );
Это надо?

UPD. чуточку ошибся, не call_user_func а call_user_func_array
но на этом не заканчивается. он просто массив передает. а вот файл где находится функция call_user_func_array я не откопал.. а там и есть эта разгадка
или..
блин. я уже запутался)
у меня она выглядит так
Код:
call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
это старая версия игнитера, а где собственно эта функция находится? в каком файле? как она по отдельности передает значения массива?
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
call_user_func_array - это стандартная функция, она не находится ни где, родная функция интерпретатора) Посмотри ты случайно не мой первый ошибочный вариант с call_user_func использовал? call_user_func_array надо

UPD.
call_user_func_array
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
капец. все придумано до нас)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ