изменить значение переменной в функции, когда переменная является аргументом - PullRequest
0 голосов
/ 02 августа 2011

Я знаком с областью применения, но не очень много использовал.Я знаю, как изменить значение переменной внутри функции, если я знаю, как называется переменная, используя GLOBAL $variableName в функции.

Я пишу метод, которому передаются 2 аргумента.Первый будет принимать массив, содержащий строки, а второй будет содержать такие настройки, как md5 для шифрования и обрезки пробелов.

Есть ли способ изменить значение первого аргумента внутри функции?или вы знаете лучший метод для достижения этой цели?

    function _Edit($string, $rules)
{
    #check if array
    if(is_array($rules)!=TRUE)
    {array_push($GLOBALS[debug], '<span class="error">_Edits second arguement must be an array</span>');}
    if(is_array($string)!=TRUE)
    {array_push($GLOBALS[debug], '<span class="error">_Edits first arguement must be an array</span>');}else
    {       
        #loop through the strings
        foreach ($string as $sk=>$sv)
        {
            #make changes based on rules
            /* order of rules is important. 
            the changes will be made in the order the rules are sent */
            foreach ($rules as $rv)
            {
                switch ($rv)
                {
                    case 'md5':
                        //$string[$sk] = md5($sv);
                                                    //GLOBALS[$string][$sk] = md5($sv);
                        break;
                }
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Если я правильно понял, вы хотите изменить значение первого аргумента вне функции изнутри функции? для этого вам нужно будет перейти по ссылке, или вы можете просто вернуть обновленный массив и перезаписать исходное значение.

http://php.net/manual/en/language.references.pass.php

1 голос
/ 02 августа 2011

Почему бы вам не вернуть массив, который вы в конечном итоге изменили в своей функции?

Итак ...

$my_array = _Edit($my_array, $rules);

А в своей функции вы делаете:

function _Edit($string, $rules) {
    ... your code ...
    ... modify $string ...
    return $string;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...