0

コールバック関数を使用すると、この問題が発生します

Class My_Class {

     public function my_function() {

            $pad = function($value) {
            return str_pad($value, 2, '0', STR_PAD_LEFT);
            };

            function pad_function($value) {
                 return str_pad($value, 2, '0', STR_PAD_LEFT);
            }

            array_map($pad, range(0,100)); //This fails with an exception "Invalid opcode 153/1/8."
            array_map("pad_function", range(0,100)); //This works ok
        }



}

PHPバージョン5.3.3-7を使用しています。

なぜこれが起こっているのかについてのアイデアはありますか?

前もって感謝します!

4

2 に答える 2

1

最後に、問題は加速器にありました。

バージョン1.0-コードを実行するときのeacceleratorcarashesの開発。eacceleratorのバージョン0.9.6.1は、コードでクラッシュしません。

于 2012-08-23T06:27:43.037 に答える
0

タイプミスは別として、$pad定義されることはありません。

次に、最初のパラメーターとして文字列を渡したためarray_map、ラムダ関数を呼び出さず、PHPに:という名前の関数を探すように指示します。これは、に格納されているラムダを呼び出すこととは異なります。$my_pad_functionmy_pad_function my_pad_function$my_pad_function

とにかく、すべてを「my_function」、「myPrettyFunction」、「myPointlessNameVar」と呼ばないようにアドバイスします。遊び場のコードでも意味のある名前を付けると、目標がより明確になります。

最後に一つだけ:

lambdas : PHP = lipstick : pig
于 2012-08-23T02:47:05.590 に答える