سؤال

أحاول التحويل:

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