Está en la página 1de 12

GUIA PRACTICA 6: ARRAYS Y FUNCIONES EN PHP

MODULO: DISEÑO DE APLICACIONES PARA LA WEB

TIEMPO PARA DESARROLLAR LA PRÁCTICA:


Prepararse para la Práctica y leer los objetivos 10 min.
Desarrollar Ejercicios propuestos 205 min.
Guardar y apagar equipo. 10 min.

OBJETIVOS

Al finalizar la Práctica, el estudiante será capaz de:


Identificar el uso y la sintaxis de los arrays en PHP
• Desarrollar script utilizando los diferentes tipos de arrays
• Identificar el uso y la sintaxis de las funciones creadas por el usuario
• Elaborar script que utilicen funciones definidas por el usuario

PROCEDIMIENTO

Arrays escalares
Los elementos de un array escalar pueden escribirse usando la siguiente sintaxis:
$a[]=valr ó $a[x]=valor

En el primero de los casos, PHP asigna automáticamente como índice el valor siguiente al último
asignado. Si es el primero que se define, le pondrá como índice 0 (CERO). En el segundo de los
casos, seremos nosotros quienes pongamos (xx) el número correspondiente al valor del índice.
Si al índice ya se le hubiera asignado un valor, cambiará el valor de la variable, en caso contrario
creará un nuevo elemento del array.

Arrays asociativos
Los elementos de un array asociativo pueden escribirse usando la siguiente sintaxis:
$a["indice"]=valor
En este caso, el índice será una cadena y se escribirá entre comillas.

Arrays bidimensionales
Un array bidimensional recoge valores de una tabla de doble entrada. Cada uno de los elementos
se identifica y se asigna mediante una variable ($nombre) seguida de dos ([ ]) que contienen los
índices del array.
Los índices pueden ser escalares -equivaldrían al número de fila y columna que la celda
ocuparía en la tabla, o puede ser asociativo que equivaldría en alguna medida a usar como
índices los nombres de la fila y de la columna.

Arrays escalares
Los elementos de un array bidimensional escalar puede escribirse usando la siguiente sintaxis:

$a[ ][ ]=valor ó $a[xx][ ]=valor ó también $a[ ][xx]=valor ó $ a[xx][yy]=valor

En el primero de los casos, PHP asigna automáticamente como primer índice el valor siguiente al
último asignado a ese mismo índice. Si es el primero que se define, le pondrá como índice 0
(CERO). Con la sintaxis del primer supuesto, al segundo índice le asignará cero ya que es en este
mismo momento cuando se habrá creado el primer índice y por tanto aún carecerá de elementos.

En el segundo de los casos, si somos nosotros quienes asignamos valor al primer índice (xx) será
el segundo quien se incremente en una unidad respecto al de valor más alto de todos aquellos
cuyo primer índice coincide con el especificado.

La tercera opción es similar a la anterior y en la cuarta se pueden asignar libremente cada uno de
los índices (xx e yy) poniendo valores numéricos.

Arrays asociativos
Los elementos de un array asociativo BIDIMIENSIONAL puede escribirse usando la siguiente
sintaxis:

$a["indice1"]["indice2"]=valor
En este caso, los índices serán cadenas y se escribirán entre comillas.

Arrays multidimensionales
PHP permite el uso de arrays de dimensiones superiores a dos. Bastaría con añadir corchetes para
modificar la dimensión del array.

$a[x][y][z]=valor;
Asignar a un valor al elemento de índices x, y y z de un array tridimensional y

$a[x][y][z][w]=valor;

Haría lo mismo, ahora con un array de dimensión cuatro.


También podrían utilizarse índices asociativos sin más que introducir dentro de los corchetes las
cadenas de asignación de índices, como siempre entre comillas.
La función array();
Para asignar valores a una matriz puede usarse la función array() que tiene la siguiente sintaxis:

$a= array (
indice 0 => valor,
..... ,
indice n => valor,
);

Por ejemplo:
$z=array (
0 => 2,
1 => "Pepe",
2 => 34.7,
);

Produciría el mismo resultado que escribir:

$z[0]=2;
$z[1]="Pepe";
$z[2]=34.7;

Anidando en array();
La función array() permite escribir arrays de cualquier dimensión utilizando la técnica de anidado.
Si pretendemos escribir los elementos de este array:
$z[0][0]=34;
$z[0][1]=35;
$z[0][2]=36;
$z[1][0]=134;
$z[1][1]=135;
$z[1][2]=136;

podríamos hacerlo así:

$z=array(
0 => array (
0 => 34,
1 => 35,
2 => 36
),
1 => array (
0 => 134,
1 => 135,
2 => 136
)
);
Como puede observarse se trata de sustituir los valores asignados a los elementos de una primera
función array() por otra nueva función array que contiene los segundos índices así como los
valores asignados a los mismos.
El anidado sucesivo permitiría generar una matriz de cualquier dimensión.
Aunque en el ejemplo anterior nos hemos referido a un array escalar idéntico procedimiento
sería válido para arrays asociativos sin más que cambiar los índices por cadenas escritas entre
comillas.

Este podría ser un ejemplo de array asociativo


$z["a"]["A"]=34;
$z["a"]["B"]=35;
$z["a"]["C"]=36;
$z["b"]["A"]=134;
$z["b"]["B"]=135;
$z["b"][C]=136;

que podría definirse así


$z=array(
"a" => array(
"A" => 34,
"B" => 35,
"C" => 36),
"b" => array(
"A" => 134,
"B" => 135,
"C" => 136)
);

Foreach
El bucle foreach permite el recorrido de elementos complejos como las matrices de una forma
sencilla. La sentencia foreach permite directamente recorrer cada uno de los elementos y
asignarles un nombre que sea más sencillo de procesar.

Foreach (Nombrearreglo as Variable)


{
Bloque de instrucciones; }

Para explicarlo mejor veamos el siguiente código


<?php
$Nombres[0]='Abraham';
$Nombres[1]='Agustín'; $Nombres[2]='Javier';
echo "<B>Bucle clásico</B><Br>\n"; for
($i = 0; $i < 3; $i++)
{
echo "Un autor de este libro se llama:<B> $Nombres[$i]</B>";
echo "<BR>\n";
}
echo "<B>Bucle foreach</B><BR>\n"; foreach ($Nombres as
$autor) echo "Un autor de este libro se llama:<B>
$autor</B><BR>\n";
?>

Como verán es más óptimo en este caso usar foreach que el simple For.
La sentencia Foreach admite otra sintaxis para permitir recorres arrays asociativos y recuperar
simultáneamente la clave y el valor de cada elemento.

Foreach (nombrearreglo as Clave => Valor)


{
bloque de instrucciones;
}

El funcionamiento de esta función se basa en el hecho de que cada vez que se recupera el
siguiente para, se introduce el valor en la variable de nombre $Valor y el valor de la clave en la
variable de nombre $Clave.

Ejemplo.
<?php

$Nombres = array ('primero' => 'Javier',


'segundo' => 'Jorge',
'tercero' => 'Santiago');

echo "<B>Bucle foreach</B><BR>\n";


foreach ($Nombres as $clave => $autor)
{
echo "Un autor de este libro se llama:<B> $autor</B>\n"; echo " y su clave es
<B>$clave</B>.<BR>\n";
}
?>

Hay que observar que en el programa anterior, una vez obtenida la clave, el elemento puede ser
referenciado dentro del bucle foreach como $autor o como $Nombre [$clave]

Manejando funciones
PHP dispone de una herramienta llamada función. Una función es un trozo de código, que
permite desarrollar una tarea concreta y bien definida, que se encuentra separado del resto de
las funciones del programa, al que se le ha dado un nombre para poder referenciarlas. A través
de este se puede llamar a la función cada vez que sea necesario. La sintaxis es la siguiente.
Function nombredelafunción ($parametro1, $parametro2,...$parametroN).
Las funciones PHP definidas por el usuario tienen la siguiente sintaxis:
function nombre()
{
.....
...instrucciones...
... funciones PHP...
}

Es imprescindible respetar estrictamente la sintaxis: function, () y escribir dentro de las llaves el


código correspondiente a esa función.

Las funciones PHP no se ejecutan en tanto y cuanto no sean invocadas.


Fíjate en el primero de los ejemplos. Nos devuelve una página en blanco porque pese a estar
definida la función no es invocada.

Para invocar una función la sintaxis es esta:


echo nombre()

Al ser llamada con esta sintaxis, se ejecutan las instrucciones contenidas en la función.

Aunque en versiones anteriores de PHP era necesario definir la función antes de invocarla, a
partir de la versión 4 no es necesaria esa organización secuencial.

La función y la llamada pueden estar escritas en cualquier parte del documento. En el tercero de
los ejemplos, la llamada a la función está escrita antes de definir la función.

Utilizando valores externos


Si se invoca una variable -definida previamente- desde una función tomará valor NULO. Recuerda
que cuando estudiamos las variables PHP veíamos que se excluyan las funciones del ámbito de
las variables, salvo que, se asignara a los mismos ámbitos globales dentro de la propia función.

En la function a1() del ejemplo, puedes comprobar este extremo y en la function a2() puedes
comprobar como asignado ámbito global SI toma los valores de esa variable.

Una de las formas de asignar valores a las variables internas es definir variables y valores dentro
del paréntesis que va detrás de function nombre, así por ejemplo:

function p1($a=2,$b=5)
Esos valores - 2 y 5 - serían utilizado por la función independientemente de que las variables $a
y/o $b pudieran contener otros distintos en el ámbito externo de la función.

Otra forma de asignación de valores a las variables internas de una función es pasar los
parámetros por valor. Para hacerlo la sintaxis es la siguiente:
En la definición de la función deben incluirse tantas variables como valores distintos pretendan
pasarse. Por ejemplo:

function p1($a,$b) prepararía la función para recibir dos valores pero requeriría que además, en
la llamada a la función se escribieran esos dos valores separados por comas. Por ejemplo:

p1(47,-32)

Una variante del ejemplo anterior, sería sustituir -en la llamada a la función- las constantes por
variables predefinidas tal como puede verse en la función a5 de los ejemplos.

Funciones que devuelven valores


Las funciones PHP pueden ejecutarse desde un script y volver a recoger en el mismo script los
resultados. Para conseguir este resultado debemos escribir dentro de la función la instrucción
return seguida de la variable o la instrucción cuyo valor pretendemos sea devuelto al script desde
el que ha sido llamada la función.

Traspaso de parámetros
Para pasar un parámetro a una función, es necesario que esta lo tenga definido en la declaración
de la función. Para definir un parámetro en una función, simplemente hay que poner el nombre
que se le quiere dar al parámetro, siguiendo las reglas de la definición de variables, en la lista de
parámetros de la función.
Ejemplo
Function tres($nombre)
{
if ($nombre == “Sara”)
{return 18;} else
{return ( rand(100) );}
}

Parámetros por defecto


Para pasar un parámetro a una función y que este tome valores predeterminados cuando desde
la llamada a la función no se le ha proporcionado ningún valor, se deben colocar siempre en las
últimas posiciones de la lista de argumentos de la función. Ejemplo de esto es el siguiente
código.
Function ejemplo1($uno, $dos=45, $tres=ZR)
{
codigo de la funcion;
}

Devolución de datos de una función


Algunas funciones es necesario que devuelva un valor por ejemplo
Function ejemplo2($uno)
{
codigo de la función;
return ($valor);
}

Y esto funciona muy bien en la mayoría de los problemas que tenemos que resolver mediante las
funciones. Pero que pasa si necesitamos que una función devuelva más de una valor. Para estas
ocasiones es necesario crearse una matriz que contenga los valores y que la función devuelva
dicha matriz.

Function ejemplo3($uno)
{
codigo de la función; return
array($valor1, $valor2, $valor3);
}

Hay que recordar que existen variables locales y variables globales. Para declarar una variable
local solo vasta con hacer lo siguiente:
$variable1 = ”Rodrigo”;

Para el caso de las variables globales se puede hacer lo siguiente.


GLOBALS $varibleglobal1;

En caso de necesitar una matriz de variables globales se debe hacer lo siguiente: $GLOBALS
$varibleglobal1; $varibleglobal2; $varibleglobal3;

y para acceder a esta matriz de variables globales se le debe de llamar de la siguiente forma:
$GLOBALS [$variableglobal3]

Variables Global
Mediante una declaración de variables globales, dentro de una función, permitimos que dicha
función pueda acceder a variables externas a la misma:
<?php function
mifuncion()
{
global $pais;
echo $pais;
}
$pais = "España";
mifuncion(); echo
$pais;
?>

Mediante el uso de la declaración global de la variable dentro de la función, instruimos a PHP de


que no ha de crear una nueva variable local, sino que va a utilizar en la función el valor de la
variable externa, con el mismo alcance que las variables externas. El resultado es que se
imprimirá el contenido de la variable (España) dos veces, una en la ejecución normal del script y
otra al ejecutarse la función llamada desde el script.

Variables estáticas
Una variable estática solo existe sólo en el ámbito local de una función y permite que la variable
no pierda su valor cuando la ejecución del programa abandona ese ámbito. De esta forma cuando
se vuelve a llamar la función, todas la variables que se declararon como estáticas recuperan su
valor con el que terminaron en la llamada anterior de la misma función.

Ejemplo:
<HTML>
<HEAD><TITLE>Ejemplo de variables estáticas</TITLE></HEAD> <BODY>
<?php

function contar()
{
static $contador;
$local = 0; for ($i = 1; $i
< 3; $i++)
{
echo "Ejecuto un bucle. Voy por la iteración $i <BR>\n";
$local ++;
$contador++;
}

echo "Al finalizar el bucle las variables valen:<br>\n";


echo "Contador = $contador<BR>\n";
echo "local = $local<BR>\n";
echo "<HR>\n";
}

for ($i = 1; $i < 4; $i++)


contar();
?>

</BODY>
</HTML>

Pasando parámetros por referencia


Tal como estamos viendo, por defecto las funciones PHP pueden recibir valores de variables
externas y utilizar esos valores sin que el valor original de la variable sufra modificación.

Una manera de forzar que la función modifique los valores externos de la variable es lo que se
llama en argot «pasar por referencia»

La manera de hacerlo es:


Hay que anteponer al nombre de la variable el símbolo & y PHP interpretará que la estamos
pasando por referencia.

El & puede anteponerse tanto en la definición de la función -fíjate en la función a2 del ejemplo
61 - como en la llamada a la función, tal como puedes ver en el caso de a3 en el ejemplo anterior.

La segunda de las opciones nos concede mayor libertad ya que nos permite usar una sola función
y decidir en las llamadas la forma de pasar los parámetros, con lo cual una misma función puede
ser llamada tanto por valores como por referencia.

¿ Desventajas de las funciones definidas por el usuario ?


PHP consume mas recursos (y por tanto es ligeramente mas lento) llamando y ejecutando una
función que ejecutando código que encuentra en línea, embebido en el script. Por eso no tiene
sentido usar funciones salvo que efectivamente vayas a utilizar esa porción de código varias
veces.

Ejercicios:

1. Elabore un programa que lea una lista de nombres de aves introducidas por el usuario en
cualquier orden y luego las ordene en orden alfabético.

2. En la empresa constructora Simón S.A. se tienen registradas las horas trabajadas por sus
obreros en cada uno de los 6 días laborales de la semana. Diseñe un programa que lea los
datos y luego calcule lo siguiente:

• El total de horas que hizo cada obrero en la semana.


• El total de horas que se trabajaron en cada día en la empresa.
• El total que la empresa tiene que pagar por salarios, si el costo por hora es de 10
dólares.

3. Crear una función que calcule el factorial de un número entre 1 y 69 si se ingresa otro
número que no está en este rango mandar un mensaje.

4. Crear una función que cree la tabla de multiplicar de cualquier número.

5. Crear una función que calcule la raíz cuadrada de cualquier número.

6. Tomando de referencia la tabla que se le presenta a continuación. Desarrolle un script


en PHP el cual permita realizar las conversiones que el usario desee.

Ejemplo si el usuario introduce 2km y selecciona convertir a metros. La respuesta sera:


Con símbolos: 2KM equivale a 2000 M
Con nombre: 2 kilimetros equivale a 2000 metros

7.La utilización de las computadoras en la educación se conoce como instrucción asistida por
computadora (CAI). Un problema que se desarrolla en los entornos CAI es la fatiga del alumno. Esto
puede ser eliminado variando el dialogo de la computadora para retener la atención del alumno.
Teniendo en cuenta esta información se le pide:
Crear una aplicación que les ayude a los estudiantes de 4° grado a practicar las tablas de multiplicación
del 1 al 10.
Criterios:
❖ Los usuarios podrán elegir la tabla que desean practicar antes de iniciar colocar imágenes de números con figuras.
❖ El orden de los números del 1 al 10 tiene que ser al azar sin repetirse.
❖ Los comentarios que se impriman para respuesta correcta e incorrecta deben de variar:
➢ Respuestas a las contestaciones correctas:
▪ Muy bien!
▪ Excelente!
▪ Buen trabajo!
▪ Keep up the good work!
➢ Respuestas a las contestaciones incorrectas:
• No, Inténtelo de nuevo
• Error, una vez más.
• Don’t give up!
• No. Keep trying
• Utilice el generador de números aleatorios para escoger el número de 1 a 4 y seleccionar una respuesta
apropiada para cada una de las contestaciones(almacenarlos en un array).
Ejemplo de un numero aleatorio entre 5 y 15 “echo rand(5, 15);”
El script comenzara a generar cada una de las tablas y esperara la respuesta del usuario.
Al final verificara el porcentaje de aciertos y el porcentaje de errores.
Si el porcentaje es mayor o igual al 75% mostrar una carita feliz aleatoriamente y felicitarlo.
Si el porcentaje es menor al 75% mostrar una imagen animada estudiando aleatoriamente.

Ejercicios especiales:
1. Utilizando arrays crear un script que funcione como una agenda personal, el arreglo
deberá de tener los siguientes elementos (Nombre completo del contacto, teléfono casa,
teléfono celular, dirección, mail). El escript contara con opciones de navegación para
mostrar los registros (Ir al primer, Ir al ultimo, Ir al anterior e Ir al siguiente) Mínimo 10
Registros.

También podría gustarte