Saltar al contenido

Significado de tres puntos (…) en PHP

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *