تفريغ مجموعة من الحجج في بي
-
08-07-2019 - |
سؤال
وبيثون المشغل "*" لتفريغ قائمة الصفوف وإعطائهم إلى وظيفة كوسائط، كما يلي:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
وهذا يعادل:
range(3, 6)
لا أحد يعرف إذا كان هناك وسيلة لتحقيق ذلك في PHP؟ بعض غوغلينغ لأشكال مختلفة من "PHP فك" لم تحول على الفور عن أي شيء .. ربما انه دعا شيء مختلف في PHP؟
المحلول
ويمكنك استخدام call_user_func_array()
لتحقيق ما يلي:
وcall_user_func_array("range", $args);
لاستخدام المثال الخاص بك.
نصائح أخرى
function add($a, $b){
return $a + $b;
}
وو$list = [4, 6];
مجموعة (بعد php5.5 يمكنك تعريف المصفوفات في هذا الطريق).
يمكنك استدعاء الدالة مع ...
:
وecho add(...$list);
ويجب عليك استخدام call_user_func_array
call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))
http://www.php.net/call_user_func_array
وأو استخدام API انعكاس http://www.php.net/oop5.reflection
في بعض الحالات، قد تفكر في استخدام unpacking
، وهو أمر ممكن في بي، هو وسيلة مماثلة لالثعبان:
list($min, $max) = [3, 6];
range($min, $max);
وهذه هي الطريقة التي كنت قد وصلت إلى هذا الجواب على الأقل.
البحث جوجل: PHP argument unpacking