使用回调函数时遇到此问题
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版。
有关为何发生这种情况的任何想法?
提前致谢!
答案 0 :(得分:1)
最后问题出在eaccelerator上。
执行代码时,eaccelerator版本1.0-dev崩溃了。 eaccelerator的0.9.6.1版本不会因代码而崩溃。
答案 1 :(得分:0)
Typos分开,$pad
永远不会被定义。
然后array_map
将不会调用您的$my_pad_function
lambda函数,因为您将my_pad_function
字符串作为第一个参数传递,告诉PHP查找名为 > my_pad_function
:这与调用存储在$my_pad_function
中的lambda不同。
无论如何,我建议你不要把所有东西都叫做“my_function”,“myPrettyFunction”,“myPointlessNameVar”:即使在游乐场代码中给出有意义的名字,你的目标也会更清晰。
最后一件事:
lambdas : PHP = lipstick : pig