2011-08-02 8 views
0

私はスコープに精通していますが、あまり使用していません。私は関数内で変数の値を変更する方法を知っています。関数内でGLOBAL $variableNameを使用して変数名を知っていればわかります。
変数が引数である場合に変数の値を関数内で変更する

私は2つの引数を渡す方法を書いています。最初の文字列は文字列を含む配列を受け取り、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; 
       } 
      } 
     } 
    } 
} 

答えて

1

私は右を理解し、あなたは内部からの関数の外側の第1引数の値を変更したい場合関数?このためには参照渡しが必要になるか、更新された配列を返して元の値を上書きすることができます。

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

1

最終的にあなたの機能で変更した配列を返さないのはなぜですか?

あなたが

そう...

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

そして、あなたの関数内:

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

これは私がすべきことです。私は返された配列で配列を更新できるかどうか分からなかった。 – Yamiko

関連する問題