我们可以在PHP的任何函数中传递数组作为参数吗?

OM *_*ity 30 php arrays function

我有一个向用户发送邮件的功能,我希望将其中一个参数作为一个id数组传递.

这可能吗?如果是,怎么办?

假设我们有一个函数:

function sendemail($id, $userid) {

}
Run Code Online (Sandbox Code Playgroud)

在示例中,$id应该是一个数组.

ale*_*lex 44

您可以将数组作为参数传递.它是按值复制的(或COW'd,这对你来说基本上是相同的),所以你可以array_pop()(和类似的)你喜欢它并且不会影响任何外面的东西.

function sendemail($id, $userid){
    // ...
}

sendemail(array('a', 'b', 'c'), 10);
Run Code Online (Sandbox Code Playgroud)

事实上你只能通过将其类型放在函数的参数签名中来接受数组......

function sendemail(array $id, $userid){
    // ...
}
Run Code Online (Sandbox Code Playgroud)

您还可以将其参数作为数组调用该函数...

call_user_func_array('sendemail', array('argument1', 'argument2'));
Run Code Online (Sandbox Code Playgroud)


Del*_*con 12

更酷的是,您可以将可变数量的参数传递给函数,如下所示:

function sendmail(...$users){
   foreach($users as $user){

   }
}

sendmail('user1','user2','user3');
Run Code Online (Sandbox Code Playgroud)


Ric*_*une 5

是的,你可以这样做。

function sendemail($id_list,$userid){
    foreach($id_list as $id) {
        printf("$id\n"); // Will run twice, once outputting id1, then id2
    }
}

$idl = Array("id1", "id2");
$uid = "userID";
sendemail($idl, $uid);
Run Code Online (Sandbox Code Playgroud)