Php 将匿名函数转换为5.2 create_函数
我正在尝试转换:Php 将匿名函数转换为5.2 create_函数,php,anonymous-function,create-function,Php,Anonymous Function,Create Function,我正在尝试转换: usort($discounts, function ($a, $b) use ($c, $d){ $value1 = $c->do_action($a, $d, $d->value); $value2 = $c->do_action($b, $d, $d->value); return $value1 == $value2 ? 0 : ($value1 > $value2 ? 1 : -1); }); 转换为可在5.2
usort($discounts, function ($a, $b) use ($c, $d){
$value1 = $c->do_action($a, $d, $d->value);
$value2 = $c->do_action($b, $d, $d->value);
return $value1 == $value2 ? 0 : ($value1 > $value2 ? 1 : -1);
});
转换为可在5.2中使用的函数
到目前为止,我认为我可以这样做:
create_function( '$a, $b use ($that, $d)', ' $value1 = $c->do_action($a, $d, $d->value); $value2 = $c->do_action($b, $d, $d->value);return $value1 == $value2 ? 0 : ($value1 > $value2 ? 1 : -1);');
但是您不能在第一个参数中使用($c,$d)。虽然不是理想的解决方案,但您应该能够使用
全局
关键字来完成您需要的:
create_function( '$a, $b', ' global $c, $d; $value1 = $c->do_action($a, $d, $d->value); $value2 = $c->do_action($b, $d, $d->value);return $value1 == $value2 ? 0 : ($value1 > $value2 ? 1 : -1);');