OM La Eternidad
Tengo una función para enviar correos a los usuarios y quiero pasar uno de sus parámetros como una matriz de ID.
¿Es posible hacer esto? En caso afirmativo, ¿cómo se puede hacer?
Supongamos que tenemos una función como:
function sendemail($id, $userid) {
}
En el ejemplo, $id
debe ser una matriz.
Alex
Puede pasar una matriz como argumento. Se copia por valor (o vaca, que esencialmente significa lo mismo para usted), por lo que puede array_pop()
(y similares) todo lo que quieras en él y no afectará nada exterior.
function sendemail($id, $userid){
// ...
}
sendemail(array('a', 'b', 'c'), 10);
De hecho, solo puede aceptar una matriz allí colocando su tipo en la firma del argumento de la función…
function sendemail(array $id, $userid){
// ...
}
También puede llamar a la función con sus argumentos como una matriz…
call_user_func_array('sendemail', array('argument1', 'argument2'));
aún más interesante, puede pasar un recuento variable de parámetros a una función como esta:
function sendmail(...$users){
foreach($users as $user){
}
}
sendmail('user1','user2','user3');
-
Esta mejor solución funciona con tipo seguro, por ejemplo (Evento … $ evento)
– compartir
16 de febrero de 2021 a las 16:39
Sí tu puedes pasar de forma segura una matriz como parámetro.
ricardo junio
Si tu puedes hacerlo.
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);
Lo que debe aclararse aquí.
Simplemente pase la matriz cuando llame a esta función.
function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
Gaurav
function sendemail(Array $id,$userid){ // forces $id must be an array
Some Process....
}
$ids = array(121,122,123);
sendmail($ids, $userId);
Gaurav
No es diferente a cualquier otra variable, por ejemplo
function sendemail($id,$userid){
echo $arr["foo"];
}
$arr = array("foo" => "bar");
sendemail($arr, $userid);
-
@vickirk: edité su respuesta para corregir el error de $userid. espero que no te importe?
– Gaurav
28 de marzo de 2011 a las 13:18
-
Tenga en cuenta que no necesita definirlo antes de llamar a la función. podrías haber hecho:
sendemail(array("foo" => "bar"), ...)
.– Tanner Ottinger
28 de marzo de 2011 a las 13:18
-
@Anonymous Loozah: cuando la longitud de la matriz no es demasiado grande.
– Gaurav
28 de marzo de 2011 a las 13:20
-
@Gaurav: Sí, pero la matriz probablemente se generará de todos modos.
– Tanner Ottinger
28 de marzo de 2011 a las 13:22
-
Duh, acababa de estar revisando las tarifas de £/$, tal vez mis dedos se confundieron cuando mi cerebro estaba dormido. Saludos @Gaurav
– Vickirk
28 de marzo de 2011 a las 13:23