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

最后,问题出在加速器上。

执行代码时,eaccelerator 的 1.0-dev 版本会出现斜杠。eaccelerator 0.9.6.1 版不会因代码而崩溃。

于 2012-08-23T06:27:43.037 回答
0

除了错别字,$pad从来没有定义过。

然后array_map不会调用您的$my_pad_functionlambda 函数,因为您将my_pad_function字符串作为第一个参数传递,告诉 PHP 查找名为 my_pad_function: 的函数,这与调用存储在$my_pad_function.

无论如何,我建议您不要将所有内容都称为“my_function”、“myPrettyFunction”、“myPointlessNameVar”:即使在操场代码中也可以给出有意义的名称,您的目标会更清晰。

最后一件事:

lambdas : PHP = lipstick : pig
于 2012-08-23T02:47:05.590 回答