我正在尝试将一些PHP 5.3代码转换为PHP 5.2(不支持匿名函数).这是PHP 5.3代码:
$nr = 2;
$a = array(1,2,3,4,5,6,7,8,9,10);
$a = array_filter($a,function($e) use($nr) {
return $e % $nr == 0;
});
Run Code Online (Sandbox Code Playgroud)
我的转换是这样的:
array_filter($a,create_function('$e','return $e % $nr == 0;'));
Run Code Online (Sandbox Code Playgroud)
应该use($nr)放在哪里?
PHP 5.2 不支持闭包。因此,您不能使用该use关键字。
如果您需要代码兼容 5.2,那么最好只创建一个命名函数/方法并传入必要的参数,而不是使用,create_function因为后者可能会导致内存泄漏(每次都会创建新函数,并且 gc 不会捕获商场)。