当变量是参数时,更改函数中变量的值

时间:2011-08-02 17:30:57

标签: php string function methods scope

我熟悉范围,但没有太多使用它。我知道如果在函数中使用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 个答案:

答案 0 :(得分:1)

为什么不返回最终在函数中修改的数组?

因此...

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

在您的功能中,您可以:

function _Edit($string, $rules) {
    ... your code ...
    ... modify $string ...
    return $string;
}

答案 1 :(得分:1)

如果我理解正确,你想从函数内部改变函数外的第一个参数的值吗?为此,您必须通过引用传递,或者您只需返回更新的数组并覆盖原始值。

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