web-dev-qa-db-ja.com

PHPの関数のパラメーターとして配列を渡すことはできますか?

ユーザーにメールを送信する機能があり、そのパラメーターの1つをIDの配列として渡したいと思います。

これは可能ですか?はいの場合、どのように行うことができますか?

次のような関数があるとします:

function sendemail($id, $userid) {

}

例では、$idは配列でなければなりません。

29
OM The Eternity

引数として配列を渡すことができます。値(または 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'));
42
alex
6
fabrik

ここで明らかにすべきこと。

この関数を呼び出すときに配列を渡すだけです。

function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
4
Shakti Singh

はい、できます。

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
Richard June
function sendemail(Array $id,$userid){  // forces $id must be an array
Some Process....
}


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

他の変数と違いはありません。

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

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

例としてこのコードを作成しました。アイデアがうまくいくことを願っています!

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

はい、配列を関数に渡すことができます。

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

さらにクールなのは、次のような関数にパラメーターの変数カウントを渡すことができることです。

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

   }
}

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

Php 5では、渡された変数のタイプをヒントにすることもできます。

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

type hinting を参照してください。

1
Davide Gualano

PHPは動的に弱く型付けされているため、関数に任意の変数を渡すことができ、関数はそれを最大限に活用しようとします。

したがって、実際には配列をパラメーターとして渡すことができます。

1
JackWilson
<?php

function takes_array($input)

{

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

}

?>
0
Noredine Bahri