Curso gratuito de PHP. Regístrate para hacer un seguimiento de tu progreso →

PHP: Parámetros de funciones

Las funciones no solo pueden devolver valores, sino también recibirlos como parámetros. Ya nos hemos encontrado con parámetros de funciones:

<?php

// Recibe un parámetro de cualquier tipo
print_r('soy un parámetro');
// Recibe dos parámetros numéricos:
// El primero es el número a redondear
// El segundo es el número de decimales a dejar
round(10.1245, 3); // 10.125
// Recibe tres parámetros de tipo cadena:
// El primero es lo que buscamos
// El segundo es por qué lo reemplazamos
// El tercero es la cadena en la que se realiza el reemplazo
str_replace('go', 'mo', 'google'); // 'moogle'

En esta lección aprenderemos a crear funciones que reciben parámetros. Supongamos que tenemos la tarea de implementar la función getLastChar(). Esta función devuelve el último carácter de una cadena que se pasa como parámetro. Así es como se usaría esta función:

<?php

// Pasando parámetros directamente sin variables
getLastChar('Hexlet'); // 't'
// Pasando parámetros a través de variables
$name1 = 'Hexlet';
getLastChar($name1); // 't'
$name2 = 'Goo';
getLastChar($name2); // 'o'

De la descripción y los ejemplos de código podemos hacer las siguientes conclusiones:

  • Necesitamos definir la función getLastChar()
  • La función debe recibir un parámetro de tipo cadena
  • La función debe devolver un valor de tipo cadena

Definición de la función:

<?php

function getLastChar($str)
{
    // Calculamos el índice del último carácter como la longitud de la cadena - 1
    return $str[strlen($str) - 1];
}

Vamos a analizarlo. Entre paréntesis se especifica el nombre del parámetro ($str). Como dentro de la función no sabemos con qué valor específico estamos trabajando, los parámetros siempre se describen como variables.

El nombre del parámetro puede ser cualquier cosa, no está relacionado con la forma en que se llama a la función. Lo importante es que este nombre refleje el significado del valor que contiene. El valor específico del parámetro dependerá de cómo se llame a esta función.

Este parámetro es obligatorio. Si intentamos llamar a la función sin él, el intérprete mostrará un error:

getLastChar(); // este código no tiene sentido
ArgumentCountError: Too few arguments to function getLastChar(), 0 passed

También se pueden especificar dos, tres o más parámetros. Se separan por comas:

<?php

// Función para encontrar el número medio
function average($x, $y)
{
    return ($x + $y) / 2;
}
average(1, 5); // 3
average(1, 2); // 1.5

Tarea

Implementa la función truncate(), que recorta la cadena pasada como argumento hasta el número de caracteres especificado, agrega puntos suspensivos al final y devuelve la cadena resultante. Esta lógica se utiliza a menudo en sitios web para mostrar texto largo de forma abreviada. La función recibe dos parámetros:

  1. La cadena que se debe recortar
  2. El número de caracteres que se deben dejar
// Pasando el texto directamente
// Recortar el texto dejando 2 caracteres
truncate('hexlet', 2)  // 'he...'

// A través de una variable
$text = '¡funciona!'
// Recortar el texto dejando 4 caracteres
$result = truncate($text, 4);
print_r($result); // => '¡fun...'

Puedes implementar esta función de diferentes maneras, solo te daremos una pista. Para resolverlo de esta manera, necesitarás extraer una subcadena de la cadena pasada como primer parámetro a la función truncate(). Para hacer esto, utiliza la función substr(). Piensa, en función de la tarea, desde qué índice y con qué longitud debes extraer la subcadena.

  <?php
  $word = 'bienvenido';
  // Puedes pasar los parámetros a la función a través de variables
  $length = 3;
  substr($word, 0, $length); // 'bie'

Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función truncate() internamente, lo importante es que cumpla con la tarea planteada.

¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
Si te encuentras con dificultades y no sabes qué hacer, pregunta en nuestra gran y amigable comunidad