¿Podemos pasar una matriz como parámetro en cualquier función en PHP?

2 minutos de lectura

avatar de usuario
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.

avatar de usuario
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.

avatar de usuario
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);

avatar de usuario
Gaurav

function sendemail(Array $id,$userid){  // forces $id must be an array
Some Process....
}


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

avatar de usuario
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


¿Ha sido útil esta solución?