2

わかりました、必要なことに使用することを検討してcreate_functionいますが、デフォルトのパラメーター値を定義する方法がわかりません。これは可能ですか?create_functionもしそうなら、PHPの関数にパラメータを入力するための最良の方法は何ですか? おそらく使用していaddslashesますか?

たとえば、次のような関数があります。

function testing($param1 = 'blah', $param2 = array())
{
    if($param1 == 'blah')
        return $param1;
    else
    {
        $notblah = '';
        if (count($param2) >= 1)
        {
            foreach($param2 as $param)
                $notblah .= $param;

            return $notblah;
        }
        else
            return 'empty';
    }
}

create_functionでは、パラメータとそのデフォルト値を追加して、同じことを行うにはどうすればよいでしょうか?

問題は、パラメーターが関数自体と同様に TEXT ファイルから取得されていることです。したがって、これを使用するための最良のアプローチとcreate_function、文字列を正確に解析する方法について疑問に思っています。

ありがとう :)

4

3 に答える 3

2

この方法で作成された関数を考えてみましょうcreate_function

$func = create_function('$who', 'echo "Hello, $who!";');

あなたはそれをこのように呼ぶことができます:

$func('World');

そして、あなたは得るでしょう:

Hello, World!


これで、パラメーターのデフォルト値を使用すると、コードは次のようになります。

$func = create_function('$who="World"', 'echo "Hello, $who!";');

注:create_functionに渡される最初の引数に、パラメーターのデフォルト値のみを追加しました。

そして、新しい関数を呼び出します:

$func();

私はまだ得る:

Hello, World!

つまり、パラメータのデフォルト値が使用されています。


したがって、パラメータのデフォルト値create_functionは、他の関数の場合と同じように機能します。パラメータのリストにデフォルト値を設定する必要があります。

その後、パラメータとその値を含む文字列を作成する方法について...エスケープする必要があるものをエスケープすることを忘れずに、いくつかの文字列の連結だと思います。

于 2010-05-01T08:47:43.300 に答える
0

匿名関数を作成しますか?はcreate_function無名関数を作成するために使用されます。それ以外の場合は、通常、次のような関数を作成する必要があります。

function name($parms)
{
   // your code here
}

create_functionを使用する場合は、次のプロトタイプを使用します。

$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
于 2010-05-01T08:47:31.750 に答える
0

私は同じ問題を抱えており、作成されたコールバック関数に配列を渡そうとしています...一時変数を作成すると思います...醜いですが、スラッシュで自分自身を苦しめたほうがいいです、私のコードは現在のように、すでに十分に不可解です。

したがって、説明するために:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
于 2011-05-14T22:02:05.410 に答える