我熟悉范围,但没有太多使用它。我知道如果在函数中使用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;
}
}
}
}
}
答案 0 :(得分:1)
为什么不返回最终在函数中修改的数组?
因此...
$my_array = _Edit($my_array, $rules);
在您的功能中,您可以:
function _Edit($string, $rules) {
... your code ...
... modify $string ...
return $string;
}
答案 1 :(得分:1)
如果我理解正确,你想从函数内部改变函数外的第一个参数的值吗?为此,您必须通过引用传递,或者您只需返回更新的数组并覆盖原始值。