我正在尝试转换:

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);');

但你不能这样做 use($c,$d) 第一层内。

有帮助吗?

解决方案

虽然不是一个理想的解决方案,你应该能够使用 global 关键字来完成你所需要的:

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);');
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top