Вопрос

Я пытаюсь преобразовать:

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