Movatterモバイル変換


[0]ホーム

URL:


PHP 8.5.0 Alpha 2 available for testing
    create_function »
    « call_user_func

    call_user_func_array

    (PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

    call_user_func_arrayCall a callback with an array of parameters

    Description

    call_user_func_array(callable$callback,array$args):mixed

    Calls thecallback given by the first parameter with the parameters inargs.

    Parameters

    callback

    Thecallable to be called.

    args

    The parameters to be passed to the callback, as an array.

    If the keys ofargs are all numeric, the keys are ignored and each element will be passed tocallback as a positional argument, in order.

    If any keys ofargs are strings, those elements will be passed tocallback as named arguments, with the name given by the key.

    It is a fatal error to have a numeric key inargs appear after a string key, or to have a string key that does not match the name of any parameter ofcallback.

    Return Values

    Returns the return value of the callback, orfalse on error.

    Changelog

    VersionDescription
    8.0.0args keys will now be interpreted as parameter names, instead of being silently ignored.

    Examples

    Example #1call_user_func_array() example

    <?php
    functionfoobar($arg,$arg2) {
    echo
    __FUNCTION__," got$arg and$arg2\n";
    }
    class
    foo{
    function
    bar($arg,$arg2) {
    echo
    __METHOD__," got$arg and$arg2\n";
    }
    }


    // Call the foobar() function with 2 arguments
    call_user_func_array("foobar", array("one","two"));

    // Call the $foo->bar() method with 2 arguments
    $foo= newfoo;
    call_user_func_array(array($foo,"bar"), array("three","four"));
    ?>

    The above example will outputsomething similar to:

    foobar got one and twofoo::bar got three and four

    Example #2call_user_func_array() using namespace name

    <?php

    namespaceFoobar;

    class
    Foo{
    static public function
    test($name) {
    print
    "Hello{$name}!\n";
    }
    }

    call_user_func_array(__NAMESPACE__.'\Foo::test', array('Hannes'));

    call_user_func_array(array(__NAMESPACE__.'\Foo','test'), array('Philip'));

    ?>

    The above example will outputsomething similar to:

    Hello Hannes!Hello Philip!

    Example #3 Using lambda function

    <?php

    $func
    = function($arg1,$arg2) {
    return
    $arg1*$arg2;
    };

    var_dump(call_user_func_array($func, array(2,4)));

    ?>

    The above example will output:

    int(8)

    Example #4 Passing values by reference

    <?php

    functionmega(&$a){
    $a=55;
    echo
    "function mega \$a=$a\n";
    }
    $bar=77;
    call_user_func_array('mega',array(&$bar));
    echo
    "global \$bar=$bar\n";

    ?>

    The above example will output:

    function mega $a=55global $bar=55

    Example #5call_user_func_array() using named arguments

    <?php
    functionfoobar($first,$second) {
    echo
    __FUNCTION__," got$first and$second\n";
    }

    // Call the foobar() function with named arguments in non-positional order
    call_user_func_array("foobar", array("second"=>"two","first"=>"one"));

    // Call the foobar() function with one named argument
    call_user_func_array("foobar", array("foo","second"=>"bar"));

    // Fatal error: Cannot use positional argument after named argument
    call_user_func_array("foobar", array("first"=>"one","bar"));

    ?>

    The above example will outputsomething similar to:

    foobar got one and twofoobar got foo and barFatal error: Uncaught Error: Cannot use positional argument after named argument

    Notes

    Note:

    Callbacks registeredwith functions such ascall_user_func() andcall_user_func_array() will not becalled if there is an uncaught exception thrown in a previous callback.

    See Also

    Found A Problem?

    Learn How To Improve This PageSubmit a Pull RequestReport a Bug
    add a note

    User Contributed Notes1 note

    sebastian dot rapetti at tim dot it
    4 years ago
    Using PHP 8, call_user_func_array call callback function using named arguments if an array with keys is passed to $args parameter, if the array used has only values, arguments are passed positionally.

    <?php

    functiontest(string $param1,string $param2):void
    {
    echo
    $param1.' '.$param2;
    }

    $args= ['hello','world'];
    //hello world
    call_user_func_array('test',$args);

    $args= ['param2'=>'world','param1'=>'hello'];
    //hello world
    call_user_func_array('test',$args);

    $args= ['unknown_param'=>'hello','param2'=>'world'];
    //Fatal error: Uncaught Error: Unknown named parameter $unknown_param
    call_user_func_array('test',$args);
    ?>
    add a note
    To Top
    and to navigate •Enter to select •Esc to close
    PressEnter without selection to search using Google

    [8]ページ先頭

    ©2009-2025 Movatter.jp