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

Posted

技术标签:

【中文标题】我们可以在 PHP 中的任何函数中将数组作为参数传递吗?【英文标题】:Can we pass an array as parameter in any function in PHP? 【发布时间】:2011-07-24 11:35:22 【问题描述】:

我有一个向用户发送邮件的函数,我想将其中一个参数作为 id 数组传递。

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

假设我们有一个函数:

function sendemail($id, $userid) 


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

【问题讨论】:

【参考方案1】:

您可以将数组作为参数传递。它是按值复制的(或COW'd,,这对您来说本质上是相同的),因此您可以在其上随意使用array_pop()(和类似的),而不会影响外部任何内容。

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


sendemail(array('a', 'b', 'c'), 10);

实际上,您只能通过将其类型放入函数的参数签名中来接受一个数组...

function sendemail(array $id, $userid)
    // ...

你也可以用它的参数作为一个数组来调用函数...

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

【讨论】:

【参考方案2】:

是的,你可以safely pass an array as a parameter。

【讨论】:

【参考方案3】:

是的,你可以这样做。

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

【讨论】:

【参考方案4】:

这里应该澄清什么。

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

function sendemail($id,$userid)
Some Process....

$id=array(1,2);
sendmail($id,$userid);

【讨论】:

【参考方案5】:
function sendemail(Array $id,$userid)  // forces $id must be an array
Some Process....



$ids  = array(121,122,123);
sendmail($ids, $userId);

【讨论】:

【参考方案6】:

更酷的是,您可以将可变数量的参数传递给这样的函数:

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

   


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

【讨论】:

这个更好的解决方案适用于类型安全,例如 (Event ...$event)【参考方案7】:

它与任何其他变量没有什么不同,例如

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


$arr = array("foo" => "bar");
sendemail($arr, $userid);

【讨论】:

@vickirk :我编辑了您的答案以纠正 $userid 的错误。希望你不介意? 注意,调用函数前不需要定义。你本可以做到的:sendemail(array("foo" => "bar"), ...). @Anonymous Loozah : 当数组长度不太大时。 @Gaurav :是的,但无论如何可能都会生成数组。 呃,我刚刚检查了英镑/美元的汇率,也许当我的大脑睡着时我的手指弄糊涂了。干杯@Gaurav【参考方案8】:

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

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

见type hinting。

【讨论】:

【参考方案9】:

由于 PHP 是动态弱类型的,你可以将任何变量传递给函数,函数会尽力使用它。

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

【讨论】:

【参考方案10】:

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

$arr = array(“a” => “first”, “b” => “second”, “c” => “third”);

function user_defined($item, $key)

    echo $key.”-”.$item.”<br/>”;
 

array_walk($arr, ‘user_defined’);

我们可以在这里找到更多的数组函数

http://skillrow.com/array-functions-in-php-part1/

【讨论】:

【参考方案11】:

我编写了这段代码作为示例。希望这个想法行得通!

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

【讨论】:

【参考方案12】:
<?php

function takes_array($input)



    echo "$input[0] + $input[1] = ", $input[0]+$input[1];



?>

【讨论】:

以上是关于我们可以在 PHP 中的任何函数中将数组作为参数传递吗?的主要内容,如果未能解决你的问题,请参考以下文章

将数组作为参数传递给PHP CodeIgniter中的模型

C++ 数组与字符串⁽²³⁾|函数与数组

在 C# 中将查询参数作为参数传递给 BigQuery 中的 IN 运算符的正确方法

如何在 PHP 中将单个附加参数传递给 array_map 回调?

在 PHP 中将数组作为参数而不是数组传递

在bash中将数组作为参数传递