PHP <5.3,create_function和use变量

use*_*515 5 php

我正在尝试将一些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)放在哪里?

web*_*ave 2

PHP 5.2 不支持闭包。因此,您不能使用该use关键字。

如果您需要代码兼容 5.2,那么最好只创建一个命名函数/方法并传入必要的参数,而不是使用,create_function因为后者可能会导致内存泄漏(每次都会创建新函数,并且 gc 不会捕获商场)。