سؤال

لقد كنت أعمل مع وظيفة PHP يأخذ حجج متعددة وصيغ لهم.حاليا أعمل مع شيء من هذا القبيل:

function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
    if ($a1 !== null) doSomethingWith($a1, 1);
    if ($a2 !== null) doSomethingWith($a2, 2);
    if ($a3 !== null) doSomethingWith($a3, 3);
    if ($a4 !== null) doSomethingWith($a4, 4);
}

ولكن كنت أتساءل إذا كنت يمكن استخدام حل مثل هذه:

function foo(params $args){
    for ($i = 0; $i < count($args); $i++)
        doSomethingWith($args[$i], $i + 1);
}

ولكن لا يزال استدعاء الدالة بنفس الطريقة ، على غرار params الكلمات الرئيسية في C# أو الحجج مجموعة في جافا سكريبت.

هل كانت مفيدة؟

المحلول

func_get_args بإرجاع صفيف مع جميع الحجج للتيار وظيفة.

نصائح أخرى

إذا كنت تستخدم PHP 5.6+، يمكنك الآن القيام بذلك:

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

المصدر: http://php.net/ دليل / EN / functions.arguments.php # functions.variable-ARG القائمة

أو من PHP 7.1 أنت الآن قادرا على استخدام نوع تلميح يسمى iterable

function f(iterable $args) {
    foreach ($args as $arg) {
        // awesome stuff
    }
}

كما أنها يمكن أن تستخدم بدلا من Traversable عند تكرار استخدام واجهة.فضلا عن أنها يمكن أن تستخدم بمثابة مولد ينتج المعلمات.

الوثائق

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top