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

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

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().
Возможно ли (и как) передать переменный список параметров по ссылке?
Спасибо!
 
neko, для некоторых индивидуумов требуется специальный подход, особые пояснения.
Будь снисходительнее, прояви христианское милосердие.
 
Нравится вам нравится друг другу...

Вы сами когда-нибудь передавали переменное кол-во арг. по ссылке? Если нет, то RTFM. А если да, то поделитесь, плиииииз.
 
не передавал.
но когда надо будет -- воспользуюсь поиском и найду.
 
Oduvanchik
если хочешь решения задачи или толчок в нужном направлении, то объясни задачу подробнее, а не выступай с заявлениями, что тебе нужно прямо здесь и сейчас.
 
Originally posted by tony2001
передавай всегда один аргумент и всегда массив.
Я согласен. Но ведь будет передача по значению. Т.е. будет копирование.
PHP:
$a = 1;
$b = 2;
$c = array(&$a, &$b);
Здесь $c не массив ссылок, а массив значений... Вообще для PHP нет понятия ссылок.
Ты это имел ввиду?
 
Вы правы. Это можно реализовать передачей массива. Вот пример:
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()), то это работать не будет…
 
Если бы кто-то с этим сталкивался, я бы давно получил ответ...
Тут нет ничего страшного, что многие этого не знают.

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