Vraag Een array gebruiken als een standaardparameter in een PHP-functie


Is het mogelijk om een ​​array als standaardparameter in een PHP-functie te gebruiken?

Ik zou graag het volgende willen doen:

$arr = array(1,2,3,4);

function sample($var1, $var2, $var3 = $arr){
    echo $var1.$var2;
    echo print_r($var3);
}

sample('a','b');
// Should still work without the third parameter and default to $arr

16
2018-01-22 10:45


oorsprong


antwoorden:


Nee, dit is niet mogelijk, de rechterhanduitdrukking van de standaardwaarde moet een constante of een array letterlijk zijn, d.w.z.

function sample($var1, $var2, $var3 = array(1, 2, 3, 4))
{
}

Als je dit gedrag wilt, kun je een afsluiting gebruiken:

$arr = array(1, 2, 3, 4);

$sample = function ($var1, $var2, array $var3 = null) use ($arr) {
    if (is_null($var3)) {
        $var3 = $arr;
    }

    // your code
}

$sample('a', 'b');

Je zou het ook met een klas kunnen uitdrukken:

class Foo
{
    private static $arr = array(1, 2, 3, 4);

    public static function bar($var1, $var2, array $var3 = null)
    {
        if (is_null($var3)) {
            $var3 = self::$arr;
        }

        // your code here
    }
}

Foo::bar('a', 'b');

21
2018-01-22 10:48



Je kunt niet passeren $arr in de functiedefinitie moet u het volgende doen:

function sample($var1, $var2, $var3 = array('test')){
    echo $var1.$var2;
    echo print_r($var3);
}

sample('a','b'); // output: abArray ( [0] => test ) 1

of, als je echt vies wilt zijn (ik zou het niet aanraden ..):

$arr = array('test');

function sample($var1, $var2, $var3 = null){
    if($var3 == null){
      global $arr;
      $var3 = $arr;
    }
    echo $var1.$var2;
    echo print_r($var3);
}

sample('a','b');

7
2018-01-22 10:47