Funciones en PHP

El uso de funciones es fundamental en cualquier lenguaje de programación. Las funciones sirven para poder etiquetar y llamar fragmento de código que se utilizan en más de una ocasión.
Para definir usa función usaremos esta sintaxis:

<?php
function nombre ($parametro1, $parametro2, ....)  //Todos los parámetros necesarios
	{
		//Aquí se ponen las intrucciones que debemos ejecutar
	return $resultado; //Esto no siempre es necesario pero se suele poner
	}
?>

¿Qué son los parámetros?

Podríamos decir que los parámetros son variables que le llegan a la función cuando se les llama. Podemos acceder a ella como si de simples variables se trataran, no debemos olvidar poner los parámetros a la hora de llamar a la función.

<?php
function mostrar_datos ($nombre, $apellidos)
	{
	echo "<p> Nombre: $nombre, Apellidos: $apellidos</p>";
	return TRUE;
	}
	
mostrar_datos("Juan Luis","Mora");
//o también
$nombre_cliente="Juan Luis";
$apellidos_cliente="Mora Blanco";
mostrar_datos($nombre_cliente,$apellidos_cliente)
?>

Uso del return

Return se utiliza para devolver un valor tras ejecutar la función, en el ejemplo anterior su uso no es necesario, pero en ejemplos como el siguiente es muy útil.

<?php
//funcion que restorna TRUE si a es mayor que B y FALSE en caso contrario
function mayor ($a, $b)
	{
	if ($a>$b)
		return TRUE;
	else
		return FALSE;
	}
	
if (mayor(24,23))
	echo "<p>24 mayor que 23</p>";
else
	echo "<p>23 mayor o igual que 24</p>";
	
?>

Parámetros por defecto

Sirven para poder llamar a una función sin pasarle un determinado parámetro y en tal caso tomará el valor por defecto, los parámetros por defecto siempre debe ir al final de la lista de parámetros. ejemplo:

<?php
//funcion que restorna TRUE si a es mayor que B y FALSE en caso contrario
function mayor ($a, $b=23)
	{
	if ($a>$b)
		return TRUE;
	else
		return FALSE;
	}
	
if (mayor(24)) //no se pasa el parámetro B pero lo toma por defecto.
	echo "24 mayor que 23";
else
	echo "23 mayor o igual que 24";
	
?>

Ejemplo completo de funciones

<?php
//Función media, recibe un array y retorna su valor medio

function media($vector)
	{
	$cont=0;
	$suma=0;
	foreach ($vector as $elemento)
		{
		$suma=$suma+$elemento;
		$cont++;
		}
	return $suma/$cont;
	}

//Función pares, recibe un array y retorna los elementos pares
function pares($vector)
	{
	$pares=NULL;
	foreach ($vector as $elemento)
		{
		if ($elemento%2==0)
			{
			$pares=$pares.$elemento;
			}
		}
	return $pares;
	}
//Función impares, recibe un array y retorna los elementos impares
function impares($vector)
	{
	$impares=NULL;
	foreach ($vector as $elemento)
		{
		if ($elemento%2<>0)
			{
			$impares=$impares.$elemento;
			}
		}
	return $impares;
	}
//Función media, recibe un array y retorna los elementos impares
function par_impar($vector,$modo ="par")
	{
	if ($modo=="par")
		return pares($vector);
	else
		return impares($vector);
	}
?>
<!DOCTYPE html>
<html>
<head> 
	<meta name="description" content="Funciones enPHP"/> 
	<meta name="keywords" content="Funciones, PHP"/> 
	<meta name="author" content="Juan Luis Mora Blanco" /> 
	<meta charset="UTF-8"/> 
	<link rel="stylesheet" href="styles.css" type="text/css" media="screen" /> 
	<title>Funciones con PHP</title> 
</head> 
<body>
<section>
<article>
<?php
$v=array(1,5,8,6,9,7,4,2,6);
	echo "<p> La media del vector es:".media($v);
	echo "<p> Los impares del vector son:".par_impar($v,"impar");
	echo "<p> Los pares del vector son:".par_impar($v);
?>
</article>
</body>
</html>

Ejemplo de función para ordenar un vector

function ordenar_vector($v)
{
	$i=0;
	$cantidad=0;
	foreach($v as $elemento)
		{
		$cantidad++;  //cuento el numero de elementos
		}
	while ($i<$cantidad)
	{
		$j=0;
		while ($j<$cantidad)
		{
	 		if ($v[$i]<$v[$j])
	 		{
	  		$menor=$v[$i];
	  		$v[$i]=$v[$j];
	  		$v[$j]=$menor;
	 		}
		j++;
		}
	$i++;
	}
	return $v;
}

Ejercicios

Todo en un fichero llamado funciones.php

  1. Crea una función que reciba tres números y retorne el mayor (no retornará TRUE ni FALSE, retornará el número mayor)
  2. Crea una función que reciba un vector y lo ordene
  3. Crea una función que muestre los elementos pares de un vector
  4. Crea una función que retorne (Deberemos meter los impares en nuevo vector y retornar el nuevo vector) los elementos impares de un vector
  5. Crea una función que muestre los elementos pares de un vector
  6. Crea una función que retorne la media de un vector numérico
  7. Crea una función que pinte una cabecera estandar de HTML5, desde el DOCTYPE hasta el body.
  8. Crea una función que pinte un pie de página de HTML5
  9. Crea una función que pinte una tabla de 3×2 (el numero de filas se puede pasar por parámetro. Sin datos, o con datos repetidos)
  10. Crea una función que pinte un select (con cinco opciones pasadas por parámetro)
  11. Crea una función que pinte un formulario, sin action
  12. Haz una función que muestre la tabla de multiplicar

Ejemplo de función que pinta la cabecera

En este ejemplo vamos a hacer una función que al ser invocada muestra la cabecera de un fichero HTML, concretamente hasta la etiqueta de body. Para ello voy a usar la técnica que se mostro aquí: Como mostrar HTML sin usar echo.
Esta técnica consiste en cerrar el código PHP para empezar a escribir HTML de forma normal. Si hacemos esto dentro de una función el código HTML se lazará sólo si invocamos a la función. Quedaría algo así:

<?php
function pintacabecera ()   //Lleva los parentesis vacios, no necesita parametro de entrada
{
//Una vez abierta la función cierro PHP y de esa forma puedo escribir HTML normal.
	?> 
<!DOCTYPE html>
<html>
<head> 
	<meta name="description" content="Función para pintar una cabecera"/> 
	<meta name="keywords" content="HTML, PHP"/> 
	<meta name="author" content="Juan Luis Mora Blanco" /> 
	<meta charset="UTF-8"/> 
	<link rel="stylesheet" href="styles.css" type="text/css" media="screen" /> 
	<title>Mostrar una cabecera HTML standar con PHP</title> 
</head> 
<body>
	<section>
	<?php
	// Aqui abro de nuevo PHP para poner la llave de fin de programa.
}//Fin de pinta cabecera
//Para llamar a al función simplemente heremos

pintacabecera();

?>

Originally posted 2011-02-08 18:31:53.

13 Responses to “ Funciones en PHP ”

  1. feliciana martínez dice:

    juan luhe is,es que me he quedado parada con los ejercicios de la cabecera y pie de página,¿me los puedes explicar?

    • jlmora dice:

      Por supuesto.

      Consiste en hacer una función que cada vez que es invocada pinta una cabecera o un pie de página.

      Consite en hacer algo así:
      <?php
      function pintar_cabecera()
      {
      ?>
      <!Doctype html…
      <head>



      </head>
      <body>
      <?php
      }
      ?>

      Lo importante es entender que dentro de una función puedo cerrar el php y empezar a escribir html sin ningún problema.
      Pero tienes que recordar que debemos abrir php para poner el } del final de la función.
      Lo tienes más detallado aquí:
      http://hacerpaginaswebconphp.com/otra-forma-de-escribir-html/

  2. julian dice:

    Juan Luis mi fichero funciones.php funciona correctamente, lo que ocurre es que tiene las funciones declaradas pero no se las llama en ninguna parte. Le he estado probando y para que funcione como has pedido hay que importarle los valores desde un formulario, pero para ello hay que modificar las funciones y ponerle el $_POST[”]

  3. feliciana martínez dice:

    gracias,juan luís lo intentaré.

  4. feliciana martínez dice:

    no lo entiendo,¿como puedo hacerlo?no sé es que igual me complico la vida y es más fácil de lo que es.
    Al llamarla solo me sale el echo pero no la cabecera,y esto me ha ocurrido en el ejercicio de ordenar.¿en qué fallo?

  5. feliciana martínez dice:

    juan luis voy a hcerlo poniendo primero el html a ver si me aclaro más

    • jlmora dice:

      He puesto el ejercicio de pintar la cabecera explicado, en esta misma entrada. El truco esta en cerrar php cuando tengamos que mostrar un fragmento grande de HTML, de esta forma no tenemos que usar los echo que siempre son un tostón y requieren en muchas ocasiones escapar caracteres.
      Entonces nosotros cerramos php dentro de la función escribimos html y luego volvemos a abrir php para cerra “}” la función.
      Ahora cada vez que llames a pintacabecera() te saldar una cabecera por pantalla.

  6. feliciana martínez dice:

    Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Unknown: Failed opening required ‘C:/wamp/www/funciones.php/ejercicio8piedepáginafunciones.php’ (include_path=’.;C:\php5\pear’) in Unknown on line 0
    juan luis en ejercicio del pie de página mira que me sale me dice en linea 0 ¿me puedes decir que me indica ésto?

    • jlmora dice:

      Mañana lo vemos en clase. Pero por el error que has pegado aquí veo que le has puesto una tilde al nombre del fichero.php, eso no puede ser y dará un error.

  7. feliciana martínez dice:

    yA LO SOLUCIONÉ LO QUE PASA QUE AL PEDIRLO ME SALE “CABECERA” IGUAL QUE CON “PIE DE PAGINA”.
    POR CIERTO,¿COMO ES POSIBLE QUE HABIENDO HECHO EL EJERCICIO DE LOS PARES IGUAL QUE TÚ NO ME SALGA?
    ES ALGO RARO….,gracias.

  8. Glen dice:

    kiiero un ejercicio que me ayude a ver de entre tres numeros… Cual es el mayo? y cual es el menor?… o.O

  9. hernan dice:

    mi resultado es un poco mas sencilla e intendible.
    <?php
    $nombre=$_POST['nombre'];
    $apellido=$_POST['apellido'];
    function datos($nombre,$apellido)
    {
    echo "DATOS INGRESADOS”;
    echo”Nombre: $nombre Apellido: $apellido “;
    }
    datos($nombre,$apellido);

    ?>

Deja un comentario