Можем ли мы передать массив в качестве параметра в любую функцию в PHP? - PullRequest
26 голосов
/ 28 марта 2011

У меня есть функция для отправки почты пользователям, и я хочу передать один из ее параметров в виде массива идентификаторов.

Возможно ли это сделать?Если да, как это можно сделать?

Предположим, у нас есть функция:

function sendemail($id, $userid) {

}

В этом примере $id должен быть массивом.

Ответы [ 12 ]

40 голосов
/ 28 марта 2011

Вы можете передать массив в качестве аргумента.Он копируется по значению (или 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'));
6 голосов
/ 28 марта 2011
4 голосов
/ 28 марта 2011

Да, вы можете сделать это.

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 голосов
/ 28 марта 2011

Что следует пояснить здесь.

Просто передайте массив при вызове этой функции.

function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
3 голосов
/ 28 марта 2011
function sendemail(Array $id,$userid){  // forces $id must be an array
Some Process....
}


$ids  = array(121,122,123);
sendmail($ids, $userId);
2 голосов
/ 28 марта 2011

Не отличается от любой другой переменной, например,

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

$arr = array("foo" => "bar");
sendemail($arr, $userid);
1 голос
/ 19 июля 2016

еще более круто, вы можете передать переменное количество параметров в функцию, подобную этой:

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

   }
}

sendmail('user1','user2','user3');
1 голос
/ 16 июня 2014

Да, мы можем передавать массивы в функцию.

$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/

1 голос
/ 28 марта 2011

Поскольку PHP динамически слабо типизирован, вы можете передать любую переменную в функцию, и функция постарается сделать с ней все возможное.

Следовательно, вы действительно можете передавать массивы в качестве параметров.

1 голос
/ 28 марта 2011

В php 5 вы также можете указать тип передаваемой переменной:

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

См. тип подсказки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...