Aprende como extraer varios valores de una función con un arreglo (array) en PHP y utilizando la sentencia return.
En PHP no podemos crear una variable dentro de una función y simplemente utilizarla fuera de esta, para eso es que existe la sentencia return que nos permite extraer un valor de nuestra función. Pero que pasa si necesitamos sacar varios valores? Para eso lo que tendríamos que hacer es crear un arreglo con los valores que necesitemos sacar de la función y mediante return sacar ese arreglo.
Puede ser un poco confuso sobre todo a la hora de intentar acceder a ese arreglo fuera de la función, asi que escribo este post para explicarlo ya que en su momento esto me causo algunas confusiones.
Como extraer un arreglo de una función con return
Para poder explicar el ejemplo de forma mas interactiva hice que nuestra aplicación en php tomara un nombre y separara cada letra con un salto de linea, es algo muy sencillo pero estaremos utilizando funciones, arreglos y ciclos, asi que empecemos primero que nada por crear la función.
function saludo($nombre){ echo "Bienvenido, ". $nombre. "<br/>"; for ($i = 0; $i < strlen($nombre); $i++){ $cadena[$i] = substr($nombre, $i, 1); } return $cadena; }
Como puedes ver nuestra función recibe como parámetro una funcion llamada $nombre, que como es logico contendra la cadena de texto con el nombre al que queremos mandar un saludo y al que queremos dividir cada letra.
La primera linea de la funcion no tiene pierde, simplemente estamos imprimiendo el nombre concatenado al saludo de bienvenido.
Después de esta linea es donde comenzamos con lo interesante, creamos un ciclo for que se va a repetir mientras que nuestra variable $i sea menor que la longitud de nuestra variable $nombre.
Para saber la longitud de la variable utilice una función llamada strlen() que nos devuelve el total de numero de caracteres que tenga nuestra cadena de texto. Dentro de nuestro ciclo, en cada iteración lo que vamos a hacer es empezar a llenar un arreglo llamado $cadena, en cada posición vamos a ir guardando una letra del nombre, para extraer los caracteres utilizamos una función llamada substr(), la cual recibe 3 parámetros en este caso, la variable a la cual queremos extraer un trozo de texto, un numero que sera desde donde comience a cortar y otro numero que sera el que indique cuantos caracteres cortara a partir de donde le indicamos con el primer numero. En este caso como estoy utilizando un ciclo para ir avanzando de letra en letra, el primer numero de nuestra función substr() lo vamos a ir cambiando con la variable $i que es nuestro indice del arreglo.
Ya por ultimo vamos a hacer lo que comentábamos, no podemos extraer todos los valores de nuestro arreglo agregando tantos returns tengamos, eso no se puede, solo podemos utilizar un return por función, ya que php al encontrar un return deja de ejecutar el código de la función, por eso solo lo podemos escribir una vez. (A menos de que sea un condicional).
Pasamos mediante return el nombre del arreglo y listo, nuestra función esta finalizada. Ahora sigue lo mas fácil, pero lo que puede causar mas confusión, como utilizamos los valores del arreglo fuera de la función.
$nombre = "Carlos"; $auxiliar = saludo($nombre);
En estas lineas de código lo único que hacemos es asignar el nombre o cadena de texto a nuestra variable $nombre. Ahora la parte mas interesante, recibir el arreglo para poder utilizarlo, para eso creamos una variable nueva, en este caso yo la llame $auxiliar y le asignamos el valor que retorne nuestra función y al mismo tiempo estamos ejecutando la función.
Por lo que ahora si quisieras acceder al primer elemento del arreglo lo único que tendrias que hacer es hacerlo con $auxiliar, de esta manera:
$auxiliar[0];
Esta ultima linea de código no la utilice en nuestra aplicación ya que nuestro arreglo no tiene un numero de elementos fijo, es dinámico, cambia con cada nombre diferente, asi que para eso voy a utilizar otro ciclo que recorra el arreglo en base a los elementos que tenga.
for($i2=0;$i2 < strlen($nombre); $i2++){ echo $auxiliar[$i2]; echo "<br/>"; }
Y es todo lo que hacemos prácticamente, es asi de sencillo, te dejo el código completo para que lo puedas contemplar de una manera mas limpia.
<?php function saludo($nombre){ echo "Bienvenido, ". $nombre. "<br/>"; for ($i = 0; $i < strlen($nombre); $i++){ $cadena[$i] = substr($nombre, $i, 1); } return $cadena; } $nombre = "Carlos"; $auxiliar = saludo($nombre); for($i2=0;$i2 < strlen($nombre); $i2++){ echo $auxiliar[$i2]; echo "<br/>"; }
Deja una respuesta