Actividades IV
1. Con datos inventados crea array para los diferentes casos:
a) La nota y el ID de cada estudiante según su grupo
<?php
$estudiantes = array( 'group1' => array ('user1' => array ('nota' => 4,
'id' => 1),
'user2' => array ('nota' => 6,
'id' => 2)
),
'group2' => 'etc');
?>
b) Cantidad de stock de cada producto en una tienda
<?php
$tienda = array( 'product1' => 'stock',
'product2' => 10);
?>
c) Nombres de las personas de tu familia
<?php
$familia = array ('name1', 'name2', 'name3');
?>
d) Nombre edad y parentesco con las personas de tu familia
<?php
$family = array ( 'hermano' => array('juan', 'esteban'),
'hermana' => 'julia',
'padre' => 'ernest',
'madre' => 'juana');
?>
Este último también se podía hacer tipo el de la tienda.
VII. Creando Funciones propias
A día de hoy, está muy bien visto el reutilizar código.
Si tenemos una determinada acción que se repetirá más de una o dos veces y que los cambios en ambos procesos son menores quizá nos convenga crear una función para dicho proceso y así evitarnos líneas repetitivas y errores en la programación.
Los argumentos de una función son datos extra que le pasamos a esta para que realice la acción, si por ejemplo tenemos una función que muestra un mensaje envuelto en etiquetas h1, el argumento a enviarle es el texto a mostrar.
Tenemos 2 tipos de funciones:
-
De dirección única: A las cuales podemos, o no, pasarle argumentos pero no devuelven un valor
-
De dos direcciones: a las cuales le pasamos argumentos y nos retornan un valor.
Para este último podríamos tener una función de comprobación de usuarios y en caso de coincidir los datos devuelve true o false si alguno es incorrecto.
Las variables dentro de una función son distintas a las de fuera de la función, como si vivieran en mundos separados. Este apartado se explicará más adelante, pero es importante tenerlo presente.
Declarar y llamar funciones:
Como habrá notado, todo (o casi todo) en PHP son funciones, como echo printf o strcasecmp, los parámetros que les enviamos funcionan de la misma manera que lo harán nuestras funciones.
Para declarar una función usaremos la palabra function seguida del nombre que asignemos a la función y los paréntesis, estos no son obligatorios pero ayudan a la comprensión del código por lo que es recomendable ponerlos.
Inserta ste codigo en tu site:
<?php
function page_header() {
echo '<html><head><title> MI pagina web</title></head>
<body bgcolor="#ECE6B4" text="#ffffff">';
}
page_header();
?>
Este código es un ejemplo de la declaración de una función, su cometido es imprimir el código HTML del head de nuestras páginas web.
La forma de llamar a la función es la última línea.
Los nombres de las funciones siguen la misma regla que los de la variable, empiezan por una letra o un subrayado y pueden contener letras, números y subrayados.
Las funciones pueden ser llamadas antes o después de ser declaradas y funcionan de igual forma.
En el código siguiente se aprecia como una función es llamada antes de ser declarada sin problema alguno.
<?php
function page_header() {
echo '<html><head><title> MI pagina web</title></head>
<body bgcolor="#ECE6B4" text="#ffffff">';
}
page_header();
page_foot();
function page_foot() {
echo '</body></html>';
}
?>
Enviar parámetros a las funciones
Ahora nos planteamos, ¿Qué pasa si queremos que el título de la web sea diferente para cada sección?
Para conseguir eso utilizaremos los argumentos.
<?php
function page_header($title="indice") {
echo '<html><head><title>MiWeb || '.$title.'</title></head>
<body bgcolor="#ECE6B4" text="#ffffff">';
}
page_header("Seccion 1");
?>
En el código podemos notar 2 grandes diferencias:
En la línea que declaramos la función agregamos un $title=”índice” entre paréntesis.
$title es el nombre que adquirirá la variable e índice el valor en caso de que al llamarla no se proporcione uno.
Si no agregamos el valor por defecto, y dejamos algo como page_header($title), al llamar la función obtendremos un error por falta de parámetros.
Y una cosa más, los valores por defecto no pueden ser variables.
Para pasar múltiples parámetros a una función solo hay que concatenarlos con comas.
<?php
function page_header($title="indice", $fondo, $text='#ECE6B4') {
echo '<html><head><title>MiWeb || '.$title.'</title></head>
<body bgcolor="'.$fondo.'" text="'.$text.'">';
}
page_header("Seccion 1", "#ffffff");
?>
Es recomendable, y una buena práctica, que los parámetros obligatorios se sitúen al principio de la declaración (es decir, en el ejemplo, $fondo sería el primer parámetro).
Retornar valores de una función
No sería lógico decir que una función puede retornar valores y no enseñar cómo.
El retorno de datos se hace con la sentencia return y solo puede ejecutarse un return por sentencia (pero puede haber varios) ya que al ejecutarse el primer return el programa sale de la función
<?php
function suma5 ($value) {
$value = $value + 5;
return $value;
}
echo suma5(6);
?>
A esta función se le envía un valor (6) y le suma 5 y devuelve el resultado.
El retorno se puede enviar directamente a una función o almacenarlo en una variable.
Entendiendo el ámbito de las variables.
La forma más fácil de entender este apartado es con ejemplos, así que me voy a matar poco en la explicación.
Las funciones tienen variables de ámbito privado o local, eso quiere decir que si en una función usamos la variable $count y dicha variable no está definida fuera, la variable no existirá.
Así mismo si en el programa principal usamos la variable $precio, y dicha variable no está definida en la función, la variable no existirá.
Veamos unos ejemplos:
<?php
function ambito() {
echo $numero;
}
$numero = 5;
echo ambito();
?>
En este ejemplo no hay salida ya que la variable $numero no fue declarada en la función.
<?php
function ambito() {
$numero = 3;
echo $numero.'<br />';
}
echo ambito();
echo $numero."!!!!";
?>
Aquí vemos como en el echo de la función sí que está declarada (pues la declaramos arriba), pero fuera ya no.
Por si aún se alberga alguna duda:
<?php
function ambito() {
if (!$numero)
$numero = 3;
echo $numero.'<br />';
}
$numero = 1;
echo ambito();
echo $numero."!!!!";
?>
Este último ejemplo un poco más elaborado, da el valor 1 a $numero, llama a la función.
En la función, si el valor $numero no está definido lo define a 3 y lo muestra, sale de la función.
Muestra el valor de $numero.
Si probáis el código, ya no deberíais albergar duda sombre el ámbito de las variables.
Pero… ¿Qué pasa si quiero usar una variable de fuera de la función?
Esta pregunta tiene 2 respuestas:
- Si el objetivo es proporcionar alguna información, podemos pasarlo como parámetro
- Si el objetivo es modificar la variable original podemos usar las 2 formas siguientes:
<?php
function ambito() {
global $numero;
echo $numero.'<br />';
$numero = 4;
}
function ambito2() {
echo $GLOBALS['numero'];
}
$numero = 3;
ambito();
ambito2();
?>
En estas 2 funciones comprobamos las 2 formas de acceder a una variable externa.
En ámbito, comprobamos como podemos alterar el número original mostrando así el número modificando en ambito2.
$GLOBALS[] es uno de los tantos arrays que existe dentro de PHP, este contiene todas las arrays globales del script.
Actividades V
Crea un programa en PHP a forma de calculadora utilizando el mínimo de funciones posible.
Crea un programa en PHP en el que tengas que exponer todo lo aprendido en este apartado
Versión .doc:
Funciones.doc
Versión .pdf:
Funciones.pdf