Передача параметров по ссылке функции с переменный кол-ом аргументов.

Oduvanchik

Guest
Передача параметров по ссылке функции с переменный кол-ом аргументов.

Передача параметров по ссылке, функции с переменный кол-ом аргументов.

Следующий код:
PHP:
function test(/*...*/)
{
	$args = func_get_args();
	foreach($args as $arg) $arg++;
}

$a = $b = 666;
test(&$a, &$b);
echo $a, ' ', $b;
напишет ‘666 666’. Не помогает также возврат по ссылке:
PHP:
$args = &func_get_args()
. Точно так же работает ф-я func_get_arg().
Возможно ли (и как) передать переменный список параметров по ссылке?
Спасибо!
 

Фанат

oncle terrible
Команда форума
neko, для некоторых индивидуумов требуется специальный подход, особые пояснения.
Будь снисходительнее, прояви христианское милосердие.
 

Oduvanchik

Guest
Нравится вам нравится друг другу...

Вы сами когда-нибудь передавали переменное кол-во арг. по ссылке? Если нет, то RTFM. А если да, то поделитесь, плиииииз.
 

Frol

Новичок
не передавал.
но когда надо будет -- воспользуюсь поиском и найду.
 

Demiurg

Guest
Oduvanchik
если хочешь решения задачи или толчок в нужном направлении, то объясни задачу подробнее, а не выступай с заявлениями, что тебе нужно прямо здесь и сейчас.
 

Oduvanchik

Guest
Originally posted by tony2001
передавай всегда один аргумент и всегда массив.
Я согласен. Но ведь будет передача по значению. Т.е. будет копирование.
PHP:
$a = 1;
$b = 2;
$c = array(&$a, &$b);
Здесь $c не массив ссылок, а массив значений... Вообще для PHP нет понятия ссылок.
Ты это имел ввиду?
 

Oduvanchik

Guest
Вы правы. Это можно реализовать передачей массива. Вот пример:
PHP:
function test($array)
{
	for ($i = 0; $i < count($array); ++$i)
	{
		$array[$i]++;
	}
}
$a = 1;
$b = 2;
test(array(&$a, &$b));
echo $a, ' ', $b;
Но тут есть подводный камень, о который я до сегодняшнего времени спотыкался. Почему-то, если использовать вместо for цикл foreach (или list() = each()), то это работать не будет…
 

Oduvanchik

Guest
Если бы кто-то с этим сталкивался, я бы давно получил ответ...
Тут нет ничего страшного, что многие этого не знают.

Тема закрыта.
 
Сверху