web-dev-qa-db-fra.com

Pouvons-nous passer un tableau en paramètre dans n’importe quelle fonction en PHP?

J'ai une fonction pour envoyer du courrier aux utilisateurs et je veux passer un de ses paramètres sous forme de tableau d'identifiants.

Est-ce possible? Si oui, comment peut-on le faire?

Supposons que nous ayons une fonction comme:

function sendemail($id, $userid) {

}

Dans l'exemple, $id devrait être un tableau.

25
OM The Eternity

Vous pouvez passer un tableau en argument. Il est copié par valeur (ou COW'd, ce qui signifie essentiellement la même chose pour vous), de sorte que vous pouvez array_pop() (et similaire) tout ce que vous aimez et n'affectera rien de l'extérieur.

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

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

Vous ne pouvez en fait y accepter un tableau qu'en plaçant son type dans la signature d'argument de la fonction ...

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

Vous pouvez également appeler la fonction avec ses arguments sous forme de tableau ...

call_user_func_array('sendemail', array('argument1', 'argument2'));
37
alex
6
fabrik

Ce qui devrait être clarifié ici.

Passez juste le tableau lorsque vous appelez cette fonction. 

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

Oui, tu peux faire ça.

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

Ce n'est pas différent d'une autre variable, par exemple.

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

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

En php 5, vous pouvez également indiquer le type de la variable transmise:

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

Voir type allusion .

1
Davide Gualano

Puisque PHP est faiblement typé dynamiquement, vous pouvez passer n'importe quelle variable à la fonction, qui tentera de faire de son mieux.

Par conséquent, vous pouvez effectivement passer des tableaux en tant que paramètres.

1
JackWilson

J'ai composé ce code à titre d'exemple. J'espère que l'idée fonctionne!

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

Oui, nous pouvons passer des tableaux à une fonction. 

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

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

array_walk($arr, ‘user_defined’);

Nous pouvons trouver plus de fonctions de tableau ici

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

0
user3743829
<?php

function takes_array($input)

{

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

}

?>
0
Noredine Bahri

encore plus cool, vous pouvez passer un nombre variable de paramètres à une fonction comme celle-ci:

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

   }
}

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