@Shimpanze

Как обработать все аргументы функции?

Не могу сообразить...

Мне нужно обработать все строчные аргументы функции (для метода класса), чтобы они автоматически очищались от пробелов. Пишу:

function foo( string $str, array $arr = [], int $int = 123 ) {
    foreach( func_get_args() as $argument ) {
        if ( is_string( $argument ) ) {
            $argument = trim( $argument );
        }
    }
    var_dump( $str );
}


...вызываю:

foo( ' bar ' );

а на выходе всё равно строка с пробелами...

Пробовал передавать по ссылке - foreach( func_get_args() as &$argument ) - выбрасывает ошибку.

Это вообще реально сделать?
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
func_get_args возвращает копии переданных аргументов, так же, как и func_get_arg.
Само собой, изменения в копии никак не отразятся на самих аргументах.
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
function change(string &$x)
{
    $x = trim($x);var_dump($x);
}
$v = "  bar  ";change($v);var_dump($v);


Под разное кол-во аргументов:
function change(string &$x0 = "", string &$x1 = "", string &$x2 = "")
{
    for ($i = 0; $i < func_num_args(); $i++)
    {
        $s = "x{$i}";$$s = trim($$s);
    }
}
$v = "  bar  ";$w = "  foo  ";
change($v);var_dump($v, $w);
change($v, $w);var_dump($v, $w);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы