0

私はグーグルで検索しましたが、答えが見つかりませんでした。関数に渡そうとしている変数に格納している配列があります。

$myArr = 'array('item1', 'item2')';

require('script.php'); //where actual function is

makeCode($myArr);

makeCode(array('item1'、'item2'));を使用する場合 それはうまくいきます..私もに追加しようとしましたglobal $myArrmakeCode、それもうまくいきませんでした。

スコープの問題だと思いますが、文字列を誤用しているのかもしれません。print_r($ myArr)は正しく印刷されますが、通過していないか何かです。

この関数は基本的に$myArr値を比較するだけで、関数の配列にあるものと一致する場合は正しいHTMLを出力するため、リストしませんでした。変数ではなく、機能します。ありがとう!

--makeCode()--
 function makeCode($listArr){
 /* global $myArr; //Tried this */
   $output = '';
   $items = array(
      'item1'        =>  "Code for item1",
      'item2'         =>  "Code for item2"
       )
   /* $myArr = $listArr; //tried this too */
        foreach ($listArr as $val) {
            if(array_key_exists($val, $items)){
                if(strlen($output)>0) $output .="|"; //Add Sytnax
                $output .="$items[$val]";
            }
        }
  }

それはほとんどそれです。

4

1 に答える 1

4
$myArr = 'array('item1', 'item2')';

$myArrはここでは文字列です。それがあなたの意図したことかわかりません。試す:

$myArr = array('item1', 'item2');

これがあなたの意図したことである場合、これは呼び出すこととは異なる動作をします

makeCode(array('item1', 'item2')); 

これは実際の配列を使用して呼び出しているためです。

于 2013-02-21T01:49:44.413 に答える