Queremos enseñarte la mejor respuesta que descubrimos en línea. Queremos que te sirva de ayuda y si deseas compartir algo que nos pueda ayudar a crecer hazlo con libertad.
Solución:
los ...$str
se llama operador splat en PHP.
Esta función le permite capturar un número variable de argumentos para una función, combinados con argumentos “normales” pasados si lo desea. Es más fácil de ver con un ejemplo:
function concatenate($transform, ...$strings)
$string = '';
foreach($strings as $piece)
$string .= $piece;
return($transform($string));
echo concatenate("strtoupper", "I'd ", "like ", 4 + 2, " apples");
// This would print:
// I'D LIKE 6 APPLES
La lista de parámetros en la declaración de la función tiene el ...
operador en él, y básicamente significa “… y todo lo demás debe ir en $cadenas”. Puede pasar 2 o más argumentos a esta función y el segundo y los subsiguientes se agregarán a las cadenas de $ arraylisto para ser utilizado.
Cada respuesta se refiere a la misma publicación de blog, además de ellos, aquí está la documentación oficial sobre listas de argumentos de longitud variable:
http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
En PHP 5.6 y versiones posteriores, las listas de argumentos pueden incluir el token … para indicar que la función acepta un número variable de argumentos. Los argumentos se pasarán a la variable dada como un array
Parece que el operador “splat” no es un nombre oficial, ¡aún así es lindo!
Hay DOS usos para el token de puntos suspensivos (…) PHP: piense en ellos como embalaje un array y desempacar un array. Ambos propósitos se aplican a los argumentos de función.
Paquete
Al definir una función, si necesita un número dinámico de variables proporcionadas a la función (es decir, no sabe cuántos argumentos se proporcionarán a esa función cuando se llame en el código), use el token de puntos suspensivos (…) para capturar todos los argumentos restantes proporcionados a esa función en un array que es accesible dentro del bloque de funciones. El número de argumentos dinámicos capturados por puntos suspensivos (…) puede ser cero o más.
Por ejemplo:
// function definition
function sum(...$numbers) // use ellipsis token when defining function
$acc = 0;
foreach ($numbers as $nn)
$acc += $nn;
return $acc;
// call the function
echo sum(1, 2, 3, 4); // provide any number of arguments
> 10
// and again...
echo sum(1, 2, 3, 4, 5);
> 15
// and again...
echo sum();
> 0
Cuando se utiliza el empaquetado en la instanciación de funciones, los puntos suspensivos (…) capturan todos los argumentos restanteses decir, aún puede tener cualquier número de argumentos iniciales fijos (posicionales):
function sum($first, $second, ...$remaining_numbers)
$acc = $first + $second;
foreach ($remaining_numbers as $nn)
$acc += $nn;
return $acc;
// call the function
echo sum(1, 2); // provide at least two arguments
> 3
// and again...
echo sum(1, 2, 3, 4); // first two are assigned to fixed arguments, the rest get "packed"
> 10
Deshacer
Alternativamente, al llamar a una función, si los argumentos que proporciona a esa función se combinan previamente en un array use el token de puntos suspensivos (…) para convertir eso array en argumentos individuales proporcionados a la función, cada uno array El elemento se asigna a la variable de argumento de la función respectiva nombrada en la definición de la función.
Por ejemplo:
function add($aa, $bb, $cc)
return $aa + $bb + $cc;
$arr = [1, 2, 3];
echo add(...$arr); // use ellipsis token when calling function
> 6
$first = 1;
$arr = [2, 3];
echo add($first, ...$arr); // used with positional arguments
> 6
$first = 1;
$arr = [2, 3, 4, 5]; // array can be "oversized"
echo add($first, ...$arr); // remaining elements are ignored
> 6
El desembalaje es particularmente útil cuando se utiliza array funciones para manipular matrices o variables.
Por ejemplo, descomprimiendo el resultado de array_slice:
function echoTwo ($one, $two)
echo "$onen$two";
$steaks = array('ribeye', 'kc strip', 't-bone', 'sirloin', 'chuck');
// array_slice returns an array, but ellipsis unpacks it into function arguments
echoTwo(...array_slice($steaks, -2)); // return last two elements in array
> sirloin
> chuck
Te mostramos comentarios y calificaciones
Si te sientes suscitado, eres capaz de dejar una crónica acerca de qué le añadirías a esta reseña.