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

我们可以在PHP中的任何函数中传递数组作为参数吗?,php,arrays,function,Php,Arrays,Function,我有一个向用户发送邮件的函数,我想将它的一个参数作为ID数组传递 这可能吗?如果是,怎么做 假设我们有一个函数: function sendemail($id, $userid) { } 在本例中,$id应该是一个数组。是的,您可以。这里应该说明什么 调用此函数时只需传递数组 function sendemail($id,$userid){ Some Process.... } $id=array(1,2); sendmail($id,$userid); $arr = array(“a”

我有一个向用户发送邮件的函数,我想将它的一个参数作为ID数组传递

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

假设我们有一个函数:

function sendemail($id, $userid) {

}

在本例中,
$id
应该是一个数组。

是的,您可以。

这里应该说明什么

调用此函数时只需传递数组

function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
$arr = array(“a” => “first”, “b” => “second”, “c” => “third”);

function user_defined($item, $key)
{
    echo $key.”-”.$item.”<br/>”;
} 

array_walk($arr, ‘user_defined’);

它与任何其他变量没有区别,例如

function sendemail($id,$userid){
  echo $arr["foo"]; 
}

$arr = array("foo" => "bar");
sendemail($arr, $userid);
是的,你能做到

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);

可以将数组作为参数传递。它是按值复制的(或者对您来说本质上是相同的),因此您可以
array\u pop()
(以及类似内容)对其进行任意复制,并且不会影响外部的任何内容

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

sendemail(array('a', 'b', 'c'), 10);
实际上,您只能通过将数组的类型放入函数的参数签名中来接受数组

function sendemail(array $id, $userid){
    // ...
}
您还可以使用其参数作为数组调用函数

call_user_func_array('sendemail', array('argument1', 'argument2'));

在php 5中,还可以提示传递的变量的类型:

function sendemail(array $id, $userid){
  //function body
}

请参阅。

因为PHP是动态弱类型的,所以您可以将任何变量传递给函数,函数将尽力使用它


因此,您确实可以将数组作为参数传递。

是的,我们可以将数组传递给函数

function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
$arr = array(“a” => “first”, “b” => “second”, “c” => “third”);

function user_defined($item, $key)
{
    echo $key.”-”.$item.”<br/>”;
} 

array_walk($arr, ‘user_defined’);
$arr=array(“a”=>“第一”、“b”=>“第二”、“c”=>“第三”);
用户定义的函数($item,$key)
{
回声$key.“-”$item.“
”; } 数组_walk($arr,'user_defined');
我们可以在这里找到更多的数组函数


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

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

   }
}

sendmail('user1','user2','user3');

我以编写此代码为例。希望这个想法行得通

<?php
$friends = array('Robert', 'Louis', 'Ferdinand');
  function greetings($friends){
    echo "Greetings, $friends <br>";
  }
  foreach ($friends as $friend) {
  greetings($friend);
  }
?>


@vickirk:我编辑了你的答案,以纠正$userid的错误。希望您不介意?请注意,在调用函数之前不需要定义它。你可以这样做:
sendmail(数组(“foo”=>“bar”),…)
@Anonymous Loozah:当数组的长度不是太大时。@Gaurav:是的,但数组可能还是会生成的。嗯,我刚刚检查了./$rates,可能是我的手指在我的大脑睡着时弄糊涂了。Cheers@Gaurav此更好的解决方案适用于类型安全,例如(事件…$Event)