You are on page 1of 59

IMPLANTACION

DE
APLICACIONES
WEB
(IAW)
Apuntes
y
Ejercicios
Implantacin de aplicaciones Web
PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador para pruebas), para
ejecutar php se usa el programa XAMPP, XAMPP viene de LAMP y WAMP
LAMP! Linu" # Apache$ My%&l # P'P
WAMP! Windo(s # Apache$ My%&l # P'P
XAMPP! Windo(s)Linu" # Apache # My%&l # P'P # Pearl
php se ejecuta dentro del servidor y cuando un ordenador hace petici*n de una pagina (eb &ue contiene php,
este se ejecuta en el propio servidor y se env+a como resultado dentro de las sentencias html &ue si interpreta
el navegador del ordenador &ue ha solicitado la pagina (eb
,ras instalar XAMPP hay &ue activar Apache ("ampp$controle"e) y se guardan los archivos php dentro de
una carpeta dentro de la carpeta -"ampplite-htdosc-php.juan
/n el navegador (eb se pondr0 la ruta de la carpeta &ue contiene los archivos php
http!))localhost)php.juan)
%i no se Activa el Apache puede ser por culpa de alg1n servicio, en caso de tener 2m(are instalado, en este
hay &ue desactivar en Edit Preferences la opci*n 2irtual machine sharing en 3disable3
Para implementar php dentro de un html, se indica <?php al principio y una ve4 finali4adas las sentencias se
finali4a con ?>, seria algo asi <?php sentencias php ?>, cada sentencia se termina con un ! , el siguiente
es un ejemplo &ue escribe en pantalla 5Mi primer programa php -n5, el a6adido "n es un salto de linea
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF 7)titleF
7)headF
7bodyF
7pF/jercicio C P'P7)pF
7Lphp
print 5Mi primer programa php -n5H
LF
7)bodyF
7)htmlF
Para imprimir un te"to en pantalla se puede utili4ar print o echo
Para definir #ariables en php, se indica con $ seguido del nombre de la variable y con un % tras el cual se
pone a &ue e&uivale esa variable, puede ser un numero entero, una cadena o string, etc, un ejemplo de
diferentes variables!
7Lphp
Mvar.ent G CKNOH
Mvar.real G @CACJKH
Mvar.string G 3Puan3H
Mvar.boolC G trueH
Mvar.boolN G falseH
print 52ariable entera Mvar.ent 7brF5H
print 52ariable real Mvar.real 7brF5H
print 52ariable de cadena Mvar.string 7brF5H
print 52ariable booleana verdadero Mvar.boolC 7brF5H
print 52ariable booleana falso Mvar.boolN 5H
LF
La salida formateada concatena un te"to con una variable
7Lphp
Mpi G @CACJKNQJH
Mlc G NR@RMpiH
print 5La longitud de la circunferencia de radio @ es! NR@RMpi &ue es5H
print NR@RMpiH
print 57brF La longitud de la circunferencia de radio @ es! Mlc5H
LF
%i la variable va entre S T (comillas dobles) junto con un te"to, lo &ue se presenta es el contenido de la
variable, pero si va entre 3 3 (;omillas simples) entonces se presenta como variable, si la variable se llama Mpi
aparecer0 Mpi y no el contenido de la variable
&oncatenacin de te'to ( #ariables
7Lphp
MprecioG@KJH
MtasaGBNCH
MivaGMprecioRMtasaH
MtotalGMprecioUMivaH
MnombreG3Pon3H
MdominioG3Velorrieta,com3H
MemailGMnombreMdominioH
print 3/l iva asciende a 3MivaH )Rprint 5/l iva asciende a Miva -n5HR)
print 57brF -n5H
print 3/l total asciende a 3MtotalH
print 57brF -n5H
print MemailH
print 5-n5H
LF
La concatenaci*n es con un (punto) entre un te"to y la variable
&oncatenacin con mascaras de Edicin
Ajustar el numero de decimales con )'f donde en lugar de ' se pone el numero de decimales, por
ejemplo para N decimales seria )*f y un ejemplo seria!
printf (3/l total asciende a WNf3, Mtotal)H )R%alida formateada con una mascara de edicion a N
decimales de C variableR)
printf (3,otal WNf iva WNf3, Mtotal, Miva)H )R%alida formateada con una mascara de edicion a N
decimales de N variableR)
Para un ancho m+nimo y car0cter de relleno )'(d donde " es el car0cter de relleno, y es el ancho o el
numero de caracteres m+nimo &ue ocupa, as+ si ponemos )+*d y el dato &ue va es N, le colocara un B
delante, si el dato es CN como ocupa el m+nimo indicado lo presenta tal cual y si fuera mayor lo
presenta tal cual, un ejemplo seria!
printf (3Xecha! WBNd)WBNd)Wd3, Mdia,Mmes,Manio)H )R&uiero &ue me apare4ca BN)BK)CKIOR)
Para for4ar a poner un entero con el signo se usa ),d, un ejemplo seria!
printf (3/l ordenador opera entre WUd y WUd grados celsius3, Mmin,Mma")H )R&uiero &ue apare4ca
el simbolo UR)
;on printf hacemos una salida formateada, se pueden concatenar varias variables, como se muestra en el
ejemplo, en el caso de N variables el primer te"to junto con WNf (WNf es una mascara de edici*n &ue esta
indicada por el s+mbolo ) y Nf indica &ue el numero decimal al &ue se haga referencia salga con solo N
decimales) hace referencia a la primera variable Mtotal
MYtodo de envi* de datos, modo P-./ y 0E/
P-./ Para recoger muchos datos de un formulario (por ejemplo una casilla de comentarios)
0E/ Para recoger pocos datos de un formulario (por ejemplo valores numYricos, palabras, etc)
Para introducir te"to, un formulario, etc sin tener &ue meter continuamente print por cada linea dentro del
php, se utili4a el modo blo&ue con print 7779A,:% contenido 9A,:%H , de la siguiente manera!
7Lphp
print 7779A,:%
a&u+ el contenido
(una tabla, un formulario, etc, sin tener &ue estar continuamente usando print)
9A,:%H
LF
1ota2 9A,:%! debe ir colocado completamente al lado i4&uierdo, si no falla el programa
;omparaci*n de las dos formas de hacerlo, para ver la diferencia!
78$$ forma estandar $$F
7Lphp
print 37form actionG5mailto!dagacoKCVgmailcom5 methodG5post5F3H
print 57pF:rdenando numeros7)pF5H
print 57pF,eclea un numero!5H
print 37input typeG5te"t5 nameG5numeroC5 si4eG5A5F3H
print 5,eclea otro numero!5H
print 37input typeG5te"t5 nameG5numeroN5 si4eG5A5F 7)pF3H
print 37input typeG5submit5 valueG5/nviar numeros5F3H
print 57)formF5H
LF
/jemplo ajuste numero decimales!
7Lphp
MprecioG@KJH
MtasaGBNCH
MivaGMprecioRMtasaH
MtotalGMprecioUMivaH
MnombreG3Pon3H
MdominioG3Velorrieta,com3H
MemailGMnombreMdominioH
print 3/l iva asciende a 3MivaH )Rprint 5/l iva asciende a Miva -n5HR)
print 57brF -n5H
printf (3/l total asciende a WNf3, Mtotal)H
print 57brF -n5H
printf (3,otal WNf iva WNf3, Mtotal, Miva)H
print 57brF -n5H
print MemailH
print 5-n5H
LF
/jemplo ancho m+nimo!
7Lphp
MdiaGNH
MmesGKH
ManioGCKIOH
printf (3Xecha! WBNd)WBNd)Wd3, Mdia,Mmes,Manio)H
print 5-n5H
LF
/jemplo poner signo!
7Lphp
MminG$@BH
Mma"GABH
ManioGCKIOH
printf (3/l ordenador opera entre WUd y WUd grados
celsius3, Mmin,Mma")H
print 5-n5H
LF
78$$ forma blo&ue $$F
7Lphp
print 7779A,:%
7form actionG5mailto!dagacoKCVgmailcom5 methodG5post5F
7pF:rdenando numeros7)pF
7pF,eclea un numero!
7input typeG5te"t5 nameG5numeroC5 si4eG5A5F
,eclea otro numero!
7input typeG5te"t5 nameG5numeroN5 si4eG5A5F 7)pF
7input typeG5submit5 valueG5/nviar numeros5F
7)formF
9A,:%H
LF
/ratamiento de 3n form3lario con php ( estr3ct3ras alternati#as con I4
/jercicio de muestra en el &ue se reciben N n1meros y se entrega una respuesta con ellos ordenados
:rganigrama!
S/l orden correcto es
Msegundo, Mprimero
S/l orden correcto es
Mprimero, Msegundo
Mprimero
7
Msegundo
Eecibidos los valores
Mprimero y Msegundo
Mprimero Z M.[/,\3nC3]
Msegundo Z M.[/,\3nN3]
?nicio
X?D
D: %?
',ML, ;ontenido del fichero! CB.ordenarChtml!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF :rdenando numeros 7)titleF
7)headF
7bodyF
7form actionG5CB.ordenarCphp5 methodG5[/,5F
7pF:rdenando numeros7)pF
7pF,eclea un numero!
7input typeG5te"t5 nameG5nC5 si4eG5A5F
,eclea otro numero!
7input typeG5te"t5 nameG5nN5 si4eG5A5F 7)pF
7input typeG5submit5 valueG5/nviar numeros5F
7)formF
7)bodyF
7)htmlF
P'P, ;ontenido fichero! CB.ordenarCphp!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF :rdenando numeros 7)titleF
7)headF
7bodyF
7Lphp
MprimeroGM.[/,\3nC3]H
MsegundoGM.[/,\3nN3]H
print 57pFEecibidos los valores Mprimero y Msegundo 7)pF5H
if(Mprimero 7 Msegundo)
^
print 57pF/l orden correcto es Mprimero, Msegundo7)pF5H
_
else
^
print 57pF/l orden correcto es Msegundo, Mprimero7)pF5H
_
LF
7)bodyF
7)htmlF
/l mismo ejercicio utili4ando P-./ es igual con la salvedad &ue donde pone 0E/ se pone P-./
Ademas en la ventana del navegador aparecen cosas diferentes en la ventanita del navegador al devolver la
respuesta seg1n se enviY con P:%, o [/,!
http!))localhost)php.juan)CB.ordenarCphpLnCGAJ`nNG@J con [/, sale arriba esto
http!))localhost)php.juan)CB.ordenarNphp con P:%, ya no sale lo &ue se env+a
print5r67 muestra informaci*n sobre una variable en una forma &ue es legible por humanos
print 57preF5print.r(M.[/,,true)57)preF5H
/ratamiento de 3n form3lario con php ( estr3ct3ras repetiti#as con While
While (B a n veces)
/jemplo! /scribir los n1meros del C al CB
;ontenido fichero CN.(hileCphp!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF /structura (hile 7)titleF
7)headF
7bodyF
7hNF /structura While 7)hNF
7Lphp
print57preF5HH
McontGCH
(hile(Mcont7GK)
^
print (5Mcont55 $ 5)H
McontUUH
_
print (5Mcont5)H
print 57brF%e ha acabado5H
print57)preF5H
LF
7)bodyF
7)htmlF
SMcontT
Mcont
7G
CB
Mcont Z C
?nicio
X?D
D:
%?
Mcont UU
While (condici*n)
^
%entenciasH
_
/jemplo! /scribir los n1meros del C hasta un numero aleatorio entre C y CBB
;ontenido fichero CN.(hileNphp!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF /structura (hile 7)titleF
7)headF
7bodyF
7hNF /structura While 7)hNF
7Lphp
print57preF5H
MtopeGrand(C,CBB)H
McontGCH
(hile(Mcont7Mtope)
^
print (5Mcont55 $ 5)H
McontUUH
_
print 5Mcont5H
print 57brF7brF%e ha acabado5H
print57)preF5H
LF
7)bodyF
7)htmlF
SMcontT
Mcont
7G
Mtope
Mcont Z C
?nicio
X?D
D:
%?
Mcont UU
Mtope Z rand(C,CBB)
/l mismo &ue el anterior pero &ue los presente de CB en CB
;ontenido fichero CN.(hile@php!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF /structura (hile 7)titleF
7)headF
7bodyF
7hNF /structura While 7)hNF
7Lphp
print57preF5H
MtopeGrand(C,CBB)H
MiniGCH
print 5/l numero aleatorio es ! Mtope-n5H
(hile(Mini7Mtope)
^
printf (5WBNd5,5Mini5)H
if (MiniWCBGGB)
^
print (5-n5)H
_
else
^
print (5 $ 5)H
_
MiniUUH
_
printf (5WBNd5,5Mini5)H
print 5-n %e acabo5H
print57)preF5H
LF
7)bodyF
7)htmlF
While 68 a n #eces7
Mismo ejercicio &ue el anterior pero con do (hile
;ontenido fichero C@.do.(hileCphp!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5
5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF /structura do (hile 7)titleF
7)headF
7bodyF
7hNF /structura do (hile 7)hNF
7Lphp
print57preF5H
MtopeGrand(C,CBB)H
MiniGCH
print 5/l numero aleatorio es ! Mtope-n5H
do
^
printf (5WBNd5,5Mini5)H
if (MiniWCBGGB)
^
print (5-n5)H
_
else
^
print (5 $ 5)H
_
MiniUUH
_(hile(Mini7Mtope)H
printf (5WBNd5,5Mini5)H
print 5-n %e acabo5H
print57)preF5H
LF
7)bodyF
7)htmlF
4or
estructura de un bucle for es!
for (e"prCH e"prNH e"pr@) sentencia
La primera e"presi*n se ejecuta al principio del bucle, la e"presi*n N se eval1a en cada pasada, si es verdadera
el bucle continua si es falsa finali4a la ejecuci*n del bucle, por cada pasada se ejecuta la e"presi*n @
/jemplo de uso del for
/mpe4ando por C mostrar en pantalla todos los n1meros hasta uno definido aleatoriamente
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF /structura for 7)titleF
7)headF
do
^
%entenciasH
_(hile (condici*n)H
7bodyF
7Lphp
MnumGrand(C,CBB)H
print 57preF-n5H
print 5/l numero aleatorio es Mnum-n5H
for(MiniGCHMini7GMnum$CHMiniUU)
^
printf(5WBNd5,Mini)H
if (MiniWCBGGB)
print(5-n5)H
else
print(5 $ 5)H
_
printf(5WBNd5,Mnum)H
print (5-n%e acab`oacuteH5)H
print 5-n-t7)preF5H
LF
7)bodyF
7)htmlF
43nciones de cadenas
number.format() Permite formatear un numero como nos convenga
;hr() Eecibe un numero entero y devuelve el car0cter correspondiente
str.rotC@() /ncriptacion sencilla de lo contenido entre ()
mdJ() /ncriptar en mdJ
usort() :rdena el contenido de un array
htmlentities(M.[/,\]) convierte todo a entidades al recuperar un te"to con [/, o P:%,
strip.tags(M.[/,\]) elimina los tags (7,F) al recuperar un te"to con [/, o P:%,
/jemplos de uso de las funciones de cadena!
789:;,<P/ ',ML P=>L?; 5$))W@;))9,9 ',ML ABC))/D5 5http!))((((@org),E)htmlA)strictdtd5F
7htmlF
7headF
7meta http$e&uivG5content$type5 contentG5te"t)htmlH charsetG?%:$IIJK$C5 F
7titleF Xunciones de cadenas (string) 7)titleF
7)headF
7bodyF
7Lphp
MvalorCGCN@AJQJQOIIAJQO@AJQH
MvalorNGNBBH
MarrCGarray(5imgCpng5,5imgNpng5,5imgCBpng5)H
print 57bFXunciones de cadenas (%tring)!7)bF5H
print 57brF5number.format(MvalorC,N,535,55)H)R formateo de numeros R)
print 57brF9ecimal G 5MvalorN5 A%;? G 5chr(MvalorN)H)Rdevuelve el valor asci de un decimal entre B y NJJR)
print 57brFLa encriptacion str.rotC@ de 3Puan3 G 5str.rotC@(5Puan5)H)R /ncriptacion sencilla R)
print 57brFLa encriptacion mdJ de 3Puan3 G 5mdJ(5Puan5)H)R /ncripta en formato mdJR)
print 57brFfuncion usort! 5Husort(MarrC,5strcmp5)Hprint.r(MarrC)H)R ordena contenido arrayR)
print 57brFfuncion usort! 5Husort(MarrC,5strnatcmp5)Hprint.r(MarrC)H)R ordena contenido array naturalR)
LF
7)bodyF
7)htmlF
43nciones
>0sicamente la idea de las funciones es definir una porci*n de c*digo &ue utili4aremos
mas de una ve4 en el programa
$F %i en ve4 de funciones usamos copy$paste y hay &ue cambiar algo, se nos puede
olvidar una de las copias
$F =na ventaja adicional es &ue puedes usar la misma funci*n en varios programas
$F Lo ra4onable es guardar las funciones en ficheros aparte y cargarlas en distintos
documentos &ue las vayan a usar

/n P'P definimos funciones con la palabra clave function
/jemplo!
function saludo()))/sta funcion se define a&ui y lo &ue hace es imprimir 'ola en color a4ul
^
print 57p styleG-5color!blue-5F 'ola 7)pF5H
_
saludo()H )) a&ui se ejecuta la funcion invocandola
/n P'P podemos cambiar la definici*n de una variable incluso su 5tipo5 %in embargo, si cambiamos la
definici*n de la funci*n y repetimos el nombre da error, solo se puede definir la funci*n una ve4 con un 1nico
nombre
Paso de par0metros a una funci*n
7Lphp
function cabecera(Mseccion)
^
print777;A>/;/EA
7div idG5cabecera5F
7hCF Mi /mpresa 7)hCF
7hNF Mseccion 7)hNF
7)divF
;A>/;/EAH
_
cabecera(5seccion5)H ))paso 3seccion3 como parametro a la funcion y lo escribira en lugar de Mseccion
print 5-t7pF ;ontenido pagina 7)pF-n5H
pie()H
LF
9alores por defecto
Podemos hacer &ue los par0metros tomen valores por defecto simplemente poniendo detr0s del par0metro un
igual y el valor por defecto
function saludo(MmensajeGT'olaT,McolorG5teal5)
Llamada a la funci*n indicando los valores
saludo (5'ola5,5aBBffBB5)H))a&ui usa los valores &ue hemos puesto
saludo (5'ola5)H))a&ui como no se define color usa el puesto por defecto
saludoN (55,5blue5)H));omo Mmensaje esta vacio no lo muestra
saludoN ()H))a&ui usa los dos valores por defecto
43ncin :3e no de#3el#e nada
print.r escribe en pantalla pero no devuelve lo &ue esper0bamos, &ue es una cadena con el array bien escrito
Arra(s
=n array almacena valores a partir de la posici*n B en adelante
/l formato es! MnombrearrayGarray(CB,NB,@B,OB)H &ue guardar+a los valores CB para la posici*n B, NB para la
posici*n C, @B para la posici*n N y OB para la posici*n @, un ejemplo gr0fico!
7Lphp
MnombrearrayGarray(CB,NB,@B,OB)H))array &ue contiene los valores CB, NB, @B y OB
print 57preF5print.r(Mnombrearray,true)57preF5H
LF
/l resultado es!
%e pueden a;adir #alores al arra( con Mnombrearray\]GCN@ y a6ade a la siguiente posicion vacia (en este
caso posici*n A) el valor CN@
7Lphp
MnombrearrayGarray(CB,NB,@B,OB)H))array &ue contiene los valores CB, NB, @B y OB
Mnombrearray\]GCN@H
print 57preF5print.r(Mnombrearray ,true)57preF5H
LF
/l resultado es!
%e pueden s3stit3ir #alores de 3n arra( con Mnombrearray\I]GAJQ y sobrescribe el contenido de la posici*n
I (en este caso vacia) con el valor AJQ
7Lphp
MnombrearrayGarray(CB,NB,@B,OB)H))array &ue contiene los valores CB, NB, @B y OB
Mnombrearray\I]GAJQH
print 57preF5print.r(Mnombrearray,true)57preF5H
LF
/l resultado es!
Array
(
\B] GF CB
\C] GF NB
\N] GF @B
\@] GF OB
)
Array
(
\B] GF CB
\C] GF NB
\N] GF @B
\@] GF OB
\A] GF CN@
)
Array
(
\B] GF CB
\C] GF NB
\N] GF @B
\@] GF OB
\I] GF AJQ
)
Los arrays se recorren con for, el siguiente ejemplo mostrara el contenido de MdatosC
7Lphp
MdatosCGarray(CB,NB,@B,OB,CN@)H
print 57ulF5H
for(MiGBHMi7count(MdatosC)HMiUU)
^
print 57liFMi$FMdatosC\Mi]7)liF5H
_
print 57)ulF5H
LF
/l resultado es!
arra(5#al3es devuelve todos los valores no vac+os de un array compact0ndolo e inde"andolo numYricamente
7Lphp
MdatosNGarray(CB,NB,5pepe5,OB)H
MdatosN\I]GAJQH
MdatosNGarray.values(MdatosN)H
print 57preF5print.r(MdatosN,true)57)preF5H
LF
/l resultado es!
foreach se emplea sobre todo para arrays asociativos
7Lphp
MdatosNGarray(CB,NB,5pepe5,OB)H
MdatosN\I]GAJQH
MdatosNGarray.values(MdatosN)H
print 57ulF5H
b B GF CB
b C GF NB
b N GF @B
b @ GF OB
b A GF CN@
Array
(
\B] GF CB
\C] GF NB
\N] GF pepe
\@] GF OB
\I] GF AJQ
)
foreach(MdatosN as Mclave GF Mvalor)
)R Mclave es lo &ue esta entre \] y Mvalor es lo &ue contiene o su valor R)
^
print 57liFMclave$FMvalor7)liF5H
_
print 57)ulF5H
LF
/l resultado es!
:rdenar arrays por sus valores (cuando son numYricos) con sort 6$n3m7
:rdenar arrays por sus valores con asort 6$mes7 o sus claves con <sort 6$mes7
A la i4&uierda el resultado de un programa php con foreach &ue en base a un array crea una tabla con los
meses y d+as de cada mes, en el centro con el uso de asort se ordenan los meses por cantidad de idas y a la
i4&uierda con el uso de <sort de ordenan por nombre de mes
2er ejercicio CI.@Array.asociativophp y CI.AArray.asociativo.ordenadophp
Arra(s de dos dimensiones
=n array de dos dimensiones tiene filas y columnas
%eg1n el ejemplo siguiente, cada columna es un array independiente
/jemplo array asociativo de C dimensi*n, ponemos!
Musuarios$nombreGarray(3?DNAE@.BC3 GF 5Alberdi, cepa5, 3?DNAE@.BN3 GF 5Alori, Pepe5, d)
b B GF CB
b C GF NB
b N GF pepe
b @ GF OB
b A GF AJQ
Musuarios$emailGarray(3?DNAE@.BC3 GF 5eepaVgamilcom5, 3?DNAE@.BN3 GF 5pepeVgamilcom5, d)
9e lo &ue se trata, es de relacionar varios arrays entre si
/jemplo array asociativo de N dimensi*n, ponemos!
MusuariosGarray(3?DNAE@.BC3 GF array (3nombre3 GF 5Alberdi, cepa5, 3email3 GF 5eepaVgamilcom5),
3?DNAE@.BN3 GF array (3nombre3 GF 5Alori, Pepe5, 3email3 GF 5pepeVgamilcom5), d)
usuarios nombre
IN2AR3_01
IN2AR3_02
IN2AR3_25
Columnas
email
Alberdi, Kepa kepa@gmail!om
" "
usuarios nombre
IN2AR3_01
IN2AR3_02
IN2AR3_25
email
Alberdi, Kepa kepa@gamil!om
" "
Ejemplo de PHP que contiene un poco de todo
Contenido del fichero 21_1Ejercicio_tipo_examen.php:
<!DOCTYPE T!" P#$"%C &'(()*C((DTD T!" +.,1((E-& &http:((.....*.or/(T0(html+(1trict.dtd&2
<html2
<head2
<title23di4ina adi4inan5a<(title2
<meta http'e67i48&content't9pe& content8&text(html: char1et8%;O'<<=>'1& 2
<(head2
<?od92
<@php
((llamo al fichero 67e contiene el arra9 a1ociati4o
re67ire_onceA&21_1pai1e1_capitale1.php&B:
((con arra9_Ce91 a1i/no a Dpai1e1 lo1 pai1e1 con 7n indiceE F,G8H3l?aniaH E F1G8H3lemaniaH .....
Dpai1e18arra9_Ce91ADpai1e1_9_capitale1B:
((con arra9_4al7e1 a1i/no a Dcapitale1 la1 capitale1 con 7n indiceE F,G8HTiranaH E F1G8H$erlinH .....
Dcapitale18arra9_4al7e1ADpai1e1_9_capitale1B:
((ahora ten/o 7n mi1mo n7mero de indice para el pai1 9 17 capital en cada arra9 de cla4e1 n7merica1

((la 1i/7iente linea 1i la de1comento me m7e1tra como e1 el arra9 ante1 de ordenarlo
((print &<pre2&.print_rADcapitale1Etr7eB.&<(pre2&:

((con a1ort ordeno la1 capitale1 dentro del arra9 pero manteniendo el n7mero de indice 67e le corre1ponde
a1ortADcapitale1B:

((la 1i/7iente linea 1i la de1comento me m7e1tra como 67eda el arra9
((print &<pre2&.print_rADcapitale1Etr7eB.&<(pre2&:

((Ienero 7n n7mero aleatorio para Dpai1 67e corre1pondera 7n n7mero de indice del arra9 Dpai1e1
Dpai18randA,Eco7ntADpai1e1B'1B:
((Creo el form7lario 67e me pre/7nta por la capital de 7n pai1 9 de?o e1co/er de 7n de1ple/a?le
(J <inp7t t9pe8&hidden& 4al7e8&Dpai1& name8&pai1&2 e1 7na caja oc7lta 67e e1ta en el form7larioE pero
67e
no 1e 4eE donde 67eda re/i1trado el n7mero calc7lado para Dpai1 9 67e 1e en4iara como dato tam?ien
J(

((a/o el form7lario 9 creo 7n ?lo67e para poder e1cri?ir e1ta parte del pro/rama tal c7al 1e haria en
html
((a67i tam?ien ha/o la llamada al pro/rama php 67e compro?ara 1i 1e ha acertado la pre/7nta al p7l1ar
el ?oton de compro?ar
print <<<KO0!#"30%O
<form action8&21_1proce1ar.php& method8&PO;T&2
<field1et2
<le/end23di4ina adi4inan5a<(le/end2
<inp7t t9pe8&hidden& 4al7e8&Dpai1& name8&pai1&2
KO0!#"30%O:

((1i/o componiendo el form7lario con la pre/7ntaE el de1ple/a?le 9 el ?oton de en4iar
((a/o la pre/7nta 9 1elecciono del arra9 el pai1 al 67e hace referencia el n7mero de indice /enerado
print &<p2Li67e1t:C7Laac7te:l e1 la capital de &.htmlentitie1ADpai1e1FDpai1GB.&@<(p2Mn&:
((Creo la ca1illa de 1eleccion 9 el contenido lo /enero recorriendo el arra9 de capitale1 con 7n foreach
print &MtMt<1elect name8M&capitalM&2Mn&:
foreachADcapitale1 a1 Dindice 82 Dci7dadB
N
print &MtMtMt<option 4al7e8M&DindiceM&2&.htmlentitie1ADci7dadB.&<(option2Mn&:
O
print &MtMt<(1elect2Mn&:
((pon/o ?oton de compro?ar 67e al p7l1arlo reali5ara la llamada al pro/rama 67e determina 1i 1e ha
acertado <form action8.......
print &<inp7t t9pe8M&17?mitM& 4al7e8M&Compro?arM&2Mn&:
print &<(field1et2Mt<(form2Mn&:

@2
<(?od92
<(html2
Y a1P e1 como 1e m7e1tra:
El pro/rama 67e proce1a lo1 dato1 9 da el re17ltado e1 e1te 21_1proce1ar.php:
<!DOCTYPE T!" P#$"%C &'(()*C((DTD T!" +.,1((E-& &http:((.....*.or/(T0(html+(1trict.dtd&2
<html2
<head2
<title23di4ina adi4inan5a<(title2
<meta http'e67i48&content't9pe& content8&text(html: char1et8%;O'<<=>'1& 2
<1t9le t9pe8&text(c11&2
.?ien N
color: QQ,,RRCC:
font'.ei/ht: ?old:
O
.mal
N
color: QCCRR,,:
font'.ei/ht: ?old:
O
.re1altado
N
font'1i5e: 2,px:
font'.ei/ht: ?old:
O
.re1alte2
N
color: QCCRR,,:
?acC/ro7nd'color: QKKKKCC:
font'.ei/ht: ?old:
O
.re1alte1
N
?acC/ro7nd'color: QCCCCKK:
font'.ei/ht: ?old:
O
<(1t9le2
<(head2
<?od92
<@php
((car/o el arra9 67e relaciona pai1e1 9 capitale1
re67ire_onceA&21_1pai1e1_capitale1.php&B:
((con arra9_Ce91 a1i/no a Dpai1e1 lo1 pai1e1 con 7n indiceE F,G8H3l?aniaH E F1G8H3lemaniaH .....
Dpai1e18arra9_Ce91ADpai1e1_9_capitale1B:
((con arra9_4al7e1 a1i/no a Dcapitale1 la1 capitale1 con 7n indiceE F,G8HTiranaH E F1G8H$erlinH .....
Dcapitale18arra9_4al7e1ADpai1e1_9_capitale1B:
((rec7pero del form7lario con PO;T el n7mero de indice del pai1 9 de la capital
Dpai18D_PO;TFpai1G:
Dcapital8D_PO;TFcapitalG:
((print &<pre2&.print_rADcapitale1Etr7eB.&<(pre2&:
((con 7n if comparo 1i lo1 indice1 de lo1 arra91 coinciden
ifAD_PO;TFHpai1HG88D_PO;TFHcapitalHGB
N
((1i coinciden 67e 67iere decir 67e e1 la capital del pai1 por el 67e 1e pre/7ntaE comfirmo el acierto
print &Mt<p cla118M&?ienM&2!79 ?ienE la capital de Dpai1e1FDpai1G e1 Dcapitale1FDcapitalG<(p2Mn&:
O
el1e
N
((1i no coincide indico 67e 1e ha fallado
print &MtMt<p cla118M&malM&2 "o 1ientoE ha1 falladoE la capital de Dpai1e1FDpai1G <1pan
cla118M&re1altadoM&2no e1 Dcapitale1FDcapitalG <(1pan2e1 Dcapitale1FDpai1G<(p2Mn&:
((E1cri?o la ta?la con todo1 lo1 pai1e1 9 capitale1 a + col7mna1
print &MtMt<ta?le ?order8M&2M&2Mn&:
print &MtMt<caption cla118M&re1altadoM&20elaciLoac7te:n de Pai1e1 9 Capitale1 de
E7ropa<(caption2Mn&:
((/enero la1 ca?ecera1 9 aplico e1tilo1
print &MtMt<tr cla118M&re1alte1M& 2 <th2Pai1<(th2<th2Capital<(th2 <(tr2Mn&:

((0ecorremo1 la ta?la de 1 en 1
forADi8,:Di<co7ntADpai1e1B:DiSSB
N
print &MtMtMt<tr2Mn&:
ifADiSDj88D_PO;TFpai1GB
N
((0e1alto el pai1 pre/7ntado 9 fallado
print &MtMtMtMt<td cla118M&re1alte2M&2&.Dpai1e1FDiSDjG.&<(td2Mn&:
O
el1e
N
print &MtMtMtMt<td2&.Dpai1e1FDiSDjG.&<(td2Mn&:
O
ifADiSDj88D_PO;TFcapitalGB
N
((0e1alto la capital fallada
print &MtMtMtMt<td cla118M&re1alte2M&2&.Dcapitale1FDiSDjG.&<(td2Mn&:
O
el1e
N
print &MtMtMtMt<td2&.Dcapitale1FDiSDjG.&<(td2Mn&:
O
print &MtMtMt<(tr2Mn&:
O
print &MtMt<(ta?le2Mn&:
O

((Para 4ol4er de n7e4o al form7lario 67e pre/7nta por la capital de 7n pai1
print <<<KO0!#"30%O
<form action8&21_1Ejercicio_tipo_examen.php& method8&PO;T&2
<p2<inp7t t9pe8&17?mit& 4al7e8&!Laac7te:1 adi4inan5a1&2<(p2
<(form2

KO0!#"30%O:
@2
<(?od92
<(html2
Y e1te el re17ltado:
En la parte final ha9 otro ?otTn para 4ol4er de n7e4o para adi4inar otra capital:
Extracto del contenido del archi4o 21_1pai1e1_capitale1.php
<@php
((arra9 a1ociati4o con lo1 pai1e1 9 capitale1
Dpai1e1_9_capitale18arra9A
H3l?aniaH 82 HTiranaHE
H3lemaniaH 82 H$erlinHE
H3ndorraH 82 H3ndorra la UellaHE
H3rmeniaH 82 HEre4anHE
H371triaH 82 HUienaHE
H35er?ai9anH 82 H$aC7HE
H$el/icaH 82 H$r71ela1HE
H$ielorr71iaH 82 H!in1CHE
H$o1nia'er5e/o4inaH 82 H;araje4oHE
V..................
H#5?eCi1tanH 82 HTa1hCentH
B:
@2
Kinalmente 7na repre1entaciTn /rWfica de lo1 arra91 para 67e 1e entienda 7n poco mejor el ejercicio.
%nicialmente el arra9 Dpai1e1_9_capitale1 tiene como Xe9 el Pai1 9 como 4al7e la Capital:
con arra9_Ce91 a1i/no a Dpai1e1 lo1 paP1e1 con 7n indiceE F,G8H3l?aniaH E F1G8H3lemaniaH .....
Dpai1e18arra9_Ce91ADpai1e1_9_capitale1B:
con arra9_4al7e1 a1i/no a Dcapitale1 la1 capitale1 con 7n indiceE F,G8HTiranaH E F1G8H$erlinH .....
Dcapitale18arra9_4al7e1ADpai1e1_9_capitale1B:
De tal manera 67e ahora ten/o do1 arra91E 7no 67e contiene por 7n lado lo1 paP1e1 9 por otro la1 capitale1 9
tienen el mi1mo n7mero de indice 67e lo1 relacionaE a1P para 7n indice 1 tenemo1 3lemania 9 $erlin.
En el de1ple/a?le donde 1e e1co/e la capital 67e corre1ponda con el Pai1 pre/7ntadoE 67eremo1 67e e1tYn
ordenada1 alfa?YticamenteE podemo1 hacerlo con 1ort A1ortADcapitale1BE pero 1i no1 fijamo1 como 67eda el
arra9 podemo1 4er 67e 1e ha cam?iado el n7mero de indice 9a 67e ordena el contenido pero tam?iYn le
a1i/na el 4alor de indice a partir del ,E Tirana tiene 7n indice de , 9 3l?ania 7n indice de ,E 9a no coincide.
Pero para 1ol7cionar el pro?lema tenemo1 a1ort Aa1ortADcapitale1BB 67e ordena el contenido pero
manteniendo 17 indice.
Pai1e1_9_capitale1 Tirana $erlin Ere4an Uiena Ual7e1
3l?ania 3lemania 3ndorra 3rmenia 371tria
Xe91
3ndorra la
$ella
arra9_Ce91ADpai1e1_9_capitale1B 3l?ania 3lemania 3ndorra 3rmenia 371tria Dpai1e1FDiG
, 1 2 * +
indice Di
arra9_4al7e1ADpai1e1_9_capitale1B Tirana $erlin Ere4an Uiena Dcapitale1FDiG
, 1 2 * +
indice Di
3ndorra la
$ella
1ortADcapitale1B $erlin Ere4an Tirana Uiena
, 1 2 * +
3ndorra la
$ella
"e a1i/na 7n
n7e4o indice
a1ortADcapitale1B $erlin Ere4an Tirana Uiena


2 1 * , +
Dpai1F,G83l?ania 82 DcapitalF,G8 Tirana
3ndorra la
$ella
!antiene el
mi1mo indice
Implantacin de aplicaciones Web (Ejercicios)
Tratamiento de un formulario tipo 'radio' con php y print_r
Ejercicio (11_formulario1.html y 11_operaciones1.php):
Teclea dos nmeros y realiza operaciones con ellos (suma y resta).
Organigrama:
isual (html y resultado php):
!resta " !primero # !segundo
!_$ET%&op&'
((
)suma*
!_$ET
!primero " !_$ET%&n1&'
!segundo " !_$ET%&n+&'
,nicio
-,.
.O /,
!_$ET%&op&'
((
)resta*
!suma " !primero 0 !segundo
)!suma*
)!resta*
.O
/,
1T234 5ontenido del fichero: 11_operacioes1.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6form action(=11_operacion1.php= method(=$ET=E
6pEOperaciones con numeros6>pE
6pETeclea dos numeros:6>pE
6pE.umero
6input type(=teHt= name(=n1= size(=A=E6>pE
6pE.umero
6input type(=teHt= name(=n+= size(=A=E 6>pE
6pEElije operacion:6>pE
6input type(=radio= name(=op= Galue(=suma=E /umar 6MrE
6input type(=radio= name(=op= Galue(=resta=E Destar 6>pE
6pE 6input type(=suMmit= Galue(=Operar=E 6>pE
6>formE
6>ModyE
6>htmlE

:1:4 5ontenido fichero: 11_operacioes1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6h1E -ormulario radio 6>h1E
6Nphp
!primero(!_$ET%&n1&'I
!segundo(!_$ET%&n+&'I
print =6preE=.print_r(!_$ET4true).=6>preE=I
if (!_$ET%&op&'((=suma=)
O
!suma(!primero 0 !segundoI
print =6pE3a suma es: !suma6>pE=I
P
else
if (!_$ET%&op&'((=resta=)
O
!resta(!primero # !segundoI
print =6pE3a resta es: !resta6>pE=I
P
NE
6>ModyE
6>htmlE
Ql usar $ET en la ;D3 Fue deGuelGe php Gan los datos enGiados4 si no Fueremos Fue aparezcan o se enGRan
muchos datos lo mejor es usar :O/T.
Tratamiento de un formulario tipo 'checkbox' con php y print_r
Ejercicio (11_formulario+.html y 11_operaciones+.php):
Teclea dos nmeros y realiza operaciones con ellos (suma y resta)4 en este caso se pueden realizar las dos
operaciones.
Organigrama:
isual (html y resultado php):
!resta " !primero # !segundo
,sset
!_$ET%&op1&'
!_$ET
!primero " !_$ET%&n1&'
!segundo " !_$ET%&n+&'
,nicio
-,.
.O
/,
!suma " !primero 0 !segundo
)!suma*
)!resta*
.O
/,
,sset
!_$ET%&op+&'
1T234 5ontenido del fichero: 11_formulario+.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6form action(=11_operacion+.php= method(=$ET=E
6pEOperaciones con numeros6>pE
6pETeclea dos numeros:6>pE
6pE.umero
6input type(=teHt= name(=n1= size(=A=E6>pE
6pE.umero
6input type(=teHt= name(=n+= size(=A=E 6>pE
6pEElije operacion:6>pE
6input type(=checSMoH= name(=op1=E /umar 6MrE
6input type(=checSMoH= name(=op+=E Destar 6>pE
6pE 6input type(=suMmit= Galue(=Operar=E 6>pE
6>formE
6>ModyE
6>htmlE

:1:4 5ontenido fichero: 11_operacioes+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6h1E -ormulario radio 6>h1E
6Nphp
!primero(!_$ET%&n1&'I
!segundo(!_$ET%&n+&'I
print =6preE=.print_r(!_$ET4true).=6>preE=I
if (isset(!_$ET%&op1&'))
O
!suma(!primero 0 !segundoI
print =6pE3a suma es: !suma6>pE=I
P
if (isset(!_$ET%&op+&'))
O
!resta(!primero # !segundoI
print =6pE3a resta es: !resta6>pE=I
P
NE
6>ModyE
6>htmlE
se puede usar &isset& o no funciona de las dos maneras:
if (isset(!_$ET%&op1&'))
if (!_$ET%&op1&')
Ql utilizar checMoH puedo marcar las dos opciones de operaciTn (suma y resta).
Tratamiento de un formulario tipo 'Select' con php y print_r
Ejercicio (11_formulario@.html y 11_operaciones@.php):
Teclea dos nmeros y realiza operaciones con ellos (suma y resta)4 en este caso se selecciona la operaciTn de
un listado.
isual (html y resultado php):
url Fue aparece al deGolGer el resultado (se Gisualiza el contenido de las GariaMles4 los datos):
1T234 5ontenido del fichero: 11_formulario@.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6form action(=11_operacion@.php= method(=$ET=E
6pEOperaciones con numeros6>pE
6pETeclea primer numero:
6input type(=teHt= name(=n1= size(=A=E6>pE
6pETeclea segundo numero:
6input type(=teHt= name(=n+= size(=A=E 6>pE
6pEElije operacion:6>pE
6select name(=operacion=E
6option Galue(=sumar=E /umar 6>optionE
6option Galue(=restar=E Destar 6>optionE
6>selectE
6MrE6MrE
6pE 6input type(=suMmit= Galue(=Operar=E 6>pE
6>formE
6>ModyE
6>htmlE
:1:4 5ontenido fichero: 11_operacioes@.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Operaciones con numeros 6>titleE
6>headE
6ModyE
6h+E -ormulario /elect 6>h+E
6Nphp
!primero(!_$ET%&n1&'I
!segundo(!_$ET%&n+&'I
print =6preE=.print_r(!_$ET4true).=6>preE=I
if (!_$ET%&operacion&'((=sumar=)
O
!suma(!primero 0 !segundoI
print =6pE3a suma es: !suma6>pE=I
P
else if (!_$ET%&operacion&'((=restar=)
O
!resta(!primero # !segundoI
print =6pE3a resta es: !resta6>pE=I
P
NE
6>ModyE
6>htmlE
Tratamiento de un formulario con php y estructuras repetitivas con While
?hile (B a n Geces)
Ejemplo: EscriMir los nmeros del 1 al 1B
5ontenido fichero 1+_Chile1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura Chile 6>titleE
6>headE
6ModyE
6h+E Estructura ?hile 6>h+E
6Nphp
print=6preE=II
!cont(1I
Chile(!cont6(L)
O
print (=!cont=.= # =)I
!cont00I
P
print (=!cont=)I
print =6MrE/e ha acaMado=I
print=6>preE=I
NE
6>ModyE
6>htmlE
)!cont*
!cont
6(
1B
!cont " 1
,nicio
-,.
.O
/,
!cont 00
?hile (condiciTn)
O
/entenciasI
P
Ejemplo: EscriMir los nmeros del 1 hasta un numero aleatorio entre 1 y 1BB.
5ontenido fichero 1+_Chile+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura Chile 6>titleE
6>headE
6ModyE
6h+E Estructura ?hile 6>h+E
6Nphp
print=6preE=I
!tope(rand(141BB)I
!cont(1I
Chile(!cont6!tope)
O
print (=!cont=.= # =)I
!cont00I
P
print =!cont=I
print =6MrE6MrE/e ha acaMado=I
print=6>preE=I
NE
6>ModyE
6>htmlE
)!cont*
!cont
6(
!tope
!cont " 1
,nicio
-,.
.O
/,
!cont 00
!tope " rand(141BB)
El mismo Fue el anterior pero Fue los presente de 1B en 1B.
5ontenido fichero 1+_Chile@.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura Chile 6>titleE
6>headE
6ModyE
6h+E Estructura ?hile 6>h+E
6Nphp
print=6preE=I
!tope(rand(141BB)I
!ini(1I
print =El numero aleatorio es : !topeUn=I
Chile(!ini6!tope)
O
printf (=VB+d=4=!ini=)I
if (!iniV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!ini00I
P
printf (=VB+d=4=!ini=)I
print =Un /e acaMo=I
print=6>preE=I
NE
6>ModyE
6>htmlE
While ! a n veces"
2ismo ejercicio Fue el anterior pero con do Chile
5ontenido fichero 1@_do_Chile1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.=
=http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura do Chile 6>titleE
6>headE
6ModyE
6h+E Estructura do Chile 6>h+E
6Nphp
print=6preE=I
!tope(rand(141BB)I
!ini(1I
print =El numero aleatorio es : !topeUn=I
do
O
printf (=VB+d=4=!ini=)I
if (!iniV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!ini00I
PChile(!ini6!tope)I
printf (=VB+d=4=!ini=)I
print =Un /e acaMo=I
print=6>preE=I
NE
6>ModyE
6>htmlE
do
O
/entenciasI
PChile (condiciTn)I
Ejemplo. 3istado de nmeros de 1B en 1B4 indicando el primer y ultimo numero.
5ontenido fichero 1@_listar1.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado numeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6form action(=1@_listar1.php= method(=$ET=E
6pETeclea numero de inicio:
6input type(=teHt= name(=n1= size(=A=E6>pE
6pETeclea numero final:
6input type(=teHt= name(=n+= size(=A=E6>pE
6pE6input type(=suMmit= Galue(=3istar=E6>pE
6>formE
6>ModyE
6>htmlE
5ontenido fichero 1@_listar1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado de .umeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6Nphp
print=6preE=I
!primero(!_$ET%&n1&'I
!ultimo(!_$ET%&n+&'I
!tope(rand(141BB)I
!ini(1I
print =El numero inicial es : !primeroUn=I
print =El numero final es : !ultimoUn=I
do
O
printf (=VB+d=4=!primero=)I
if (!primeroV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!primero00I
PChile(!primero6!ultimo)I
printf (=VB+d=4=!ultimo=)I
print =Un /e acaMo=I
print=Un6>preEUn=I
NE
6>ModyE
6>htmlE
Ejemplo. 3istado de nmeros de 1B en 1B4 indicando el primer y ultimo numero4 pero empezando por el mas
Majo independientemente de cual se ponga primero.
5ontenido fichero 1@_listar+.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado numeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6form action(=1@_listar+.php= method(=$ET=E
6pETeclea numero de inicio:
6input type(=teHt= name(=n1= size(=A=E6>pE
6pETeclea numero final:
6input type(=teHt= name(=n+= size(=A=E6>pE
6pE6input type(=suMmit= Galue(=3istar=E6>pE
6>formE
6>ModyE
6>htmlE
5ontenido fichero 1@_listar+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado de .umeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6Nphp
print=6preE=I
!primero(!_$ET%&n1&'I
!ultimo(!_$ET%&n+&'I
!tope(rand(141BB)I
!ini(1I
print =El numero inicial es : !primeroUn=I
print =El numero final es : !ultimoUn=I
print =Un=I
if (!primero6!ultimo)
O
do
O
printf (=VB@d=4=!primero=)I
if (!primeroV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!primero00I
PChile(!primero6!ultimo)I
printf (=VB@d=4=!ultimo=)I
P
else
O
do
O
printf (=VB@d=4=!primero=)I
if (!primeroV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!primero##I
PChile(!primeroE!ultimo)I
printf (=VB@d=4=!primero=)I
P
print =Un=I
print =Un /e acaMo=I
print=Un6>preEUn=I
NE
6>ModyE
6>htmlE
2ismo Fue el anterior pero con otra forma de hacer la comparaciTn.
5ontenido fichero 1@_listar+.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado numeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6form action(=1@_listar@.php= method(=$ET=E
6pETeclea numero de inicio:
6input type(=teHt= name(=n1= size(=A=E6>pE
6pETeclea numero final:
!_$ET%&n1&'
E
!_$ET%&n+&'
.O
/,
!_num1 " !_$ET%n+'
!_num+ " !_$ET%n1'
!_num1 " !_$ET%n1'
!_num+ " !_$ET%n+'
6input type(=teHt= name(=n+= size(=A=E6>pE
6pE6input type(=suMmit= Galue(=3istar=E6>pE
6>formE
6>ModyE
6>htmlE
5ontenido fichero 1@_listar+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 3istado de .umeros con do Chile 6>titleE
6>headE
6ModyE
6h+E 3istado de .umeros 6>h+E
6Nphp
print=6preE=I
if (!_$ET%&n1&'E!_$ET%&n+&')
O
!primero(!_$ET%&n+&'I
!ultimo(!_$ET%&n1&'I
P
else
O
!primero(!_$ET%&n1&'I
!ultimo(!_$ET%&n+&'I
P
!tope(rand(141BB)I
!ini(1I
print =El numero inicial es : !primeroUn=I
print =El numero final es : !ultimoUn=I
print =Un=I
do
O
printf (=VB@d=4=!primero=)I
if (!primeroV1B((B)
O
print (=Un=)I
P
else
O
print (= # =)I
P
!primero00I
PChile(!primero6!ultimo)I
printf (=VB@d=4=!ultimo=)I
print =Un=I
print =Un /e acaMo=I
print=Un6>preEUn=I
NE
6>ModyE
6>htmlE
#omando for$
3istado de numeros desde 1 hasta un numero aleatorio4 presentados de 1B en 1B.
5ontenido fichero 1A_for1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura for 6>titleE
6>headE
6ModyE
6Nphp
!num(rand(141BB)I
print =6preEUn=I
print =El numero aleatorio es !numUn=I
for(!ini(1I!ini6(!num#1I!ini00)
O
printf(=VB+d=4!ini)I
if (!iniV1B((B)
print(=Un=)I
else
print(= # =)I
P
printf(=VB+d=4!num)I
print (=Un/e acaMWoacuteI=)I
print =UnUt6>preE=I
NE
6>ModyE
6>htmlE
Ejemplo de uso del for4 construcciTn de taMlas4 indicando el nX de filas y el nX de columnas:
5ontenido fichero 1A_for+.html:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 5onstructor de taMlas 6>titleE
6>headE
6ModyE
6h+E 5onstructor de taMlas 6>h+E
6form action(=1A_for+.php= method(=$ET=E
6pE.umero de filas:
6input type(=teHt= name(=n1= size(=A=E6>pE
6pE.umero de columnas:
6input type(=teHt= name(=n+= size(=A=E6>pE
6pE6input type(=suMmit= Galue(=1acer taMla=E6>pE
6>formE
6>ModyE
6>htmlE
5ontenido fichero 1A_for+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Estructura for 6>titleE
6>headE
6ModyE
6Nphp
!fil(!_$ET%&n1&'I
!col(!_$ET%&n+&'I
print =Un6taMle Morder(&1&EUn=I
print =3a taMla tendra !fil filasUn=I
print =3a taMla tendra !col columnasUn=I
for(!contf(1I!contf6(!filI!contf00)
O
print =6trEUn=I
for(!contc(1I!contc6(!colI!contc00)
O
print =6tdEUn=I
print =!contf#!contc=I
print =6>tdEUn=I
P
print =>trEUn=I
P
print =6>taMleEUn=I
NE
6>ModyE
6>htmlE
Ejemplos de funciones de cadenas:
5ontenido fichero 1K_cadenas1.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE -unciones de cadenas (string) 6>titleE
6>headE
6ModyE
6Nphp
!Galor1(1+@AKYKYZJJAKYZ.@AKYI
!Galor+(+BBI
!arr1(array(=img1.png=4=img+.png=4=img1B.png=)I
print =6ME-unciones de cadenas (/tring):6>ME=I
print =6MrE=.numMer_format(!Galor14+4=&=4=.=)I>[ formateo de numeros [>
print =6MrE8ecimal ( =.!Galor+.= Q/5, ( =.chr(!Galor+)I>[ deGuelGe el Galor asci de un decimal entre
B y +KK [>
print =6MrE3a encriptacion str_rot1@ de &\uan& ( =.str_rot1@(=\uan=)I>[ Encriptacion sencilla [>
print =6MrE3a encriptacion mdK de &\uan& ( =.mdK(=\uan=)I>[ Encripta en formato mdK[>
print =6MrEfuncion usort: =Iusort(!arr14=strcmp=)Iprint_r(!arr1)I>[ ordena contenido array[>
print =6MrEfuncion usort: =Iusort(!arr14=strnatcmp=)Iprint_r(!arr1)I>[ ordena contenido array natural[>
NE
6>ModyE
6>htmlE
5ontenido fichero 1K_cadenas+.php:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 5adenas con php 6>titleE
6>headE
6ModyE
6Nphp
!Galor1(BI
!Galor+(+KKI
print =5odigo decimal y su correspondiente en Q/5,=I
for(!Galor1I!Galor16(!Galor+I!Galor100)
O
print =6MrEUn=I
print (=!Galor1 es:=.chr(!Galor1))I>[ formateo de numeros[>
P
NE
6>ModyE
6>htmlE
Ejemplo de introduccin a las funciones en php (1Z_1,ntro_funcion.php)$
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE ,ntroduccion funciones 6>titleE
6>headE
6ModyE
6Nphp
>[
<asicamente la idea de las funciones es definir una porcion de codigo Fue utilizaremos
mas de una Gez en el programa.
#E /i en Gez de funciones usamos copy#paste y hay Fue camMiar algo4 se nos puede
olGidar una de las copias.
#E ;na Gentaja adicional es Fue puedes usar la misma funcion en Garios programas.
#E 3o razonaMle es guardar las funciones en ficheros aparte y cargarlas en distintos
documentos Fue las Gayan a usar.

En :1: definimos funciones con la palaMra claGe function.
[>
saludo()I >> puedo llamar a la funcion antes de definirla

function saludo()>>Esta funcion se define aFui y lo Fue hace es imprimir 1ola en color azul
O
print =6p style(U=color:MlueU=E 1ola 6>pE=I
P

saludo()I >> aFui se ejecuta la funcion inGocandola

>[
En :1: podemos camMiar la definicion de una GariaMle. incluso su =tipo=.
/in emMargo4 si camMiamos la definicion de la funcion y repetimos el nomMre casca
[>
!alumno(=pepito=I
print =6pEEl alumno es !alumno6>pE=I
!alumno(=luisito=I
print =6pEEl alumno es !alumno6>pE=I
NE
6>ModyE
6>htmlE
Desultado de la ejecuciTn:
Ejemplo de paso de par%metros en funciones (1Z_+funcion_con_parametros.php)$
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Ejemplo uso funcion 6>titleE
6>headE
6ModyE
6Nphp
function caMecera(!seccion)
O
print6665Q<E5EDQ
6diG id(=caMecera=E
6h1E 2i Empresa 6>h1E
6h+E !seccion 6>h+E
6>diGE
5Q<E5EDQI
P

function pie()
O
print666:,E
6diG id(=pie=E
6h@E Telefono: LAA@+1+JZ 6>h@E
6h@E 8ireccion: Mala Mla Mla 6>h@E
6>diGE
:,EI
P


caMecera(=seccion=)I
print =Ut6pE 5ontenido pagina 6>pEUn=I
pie()I

NE
6>ModyE
6>htmlE
Desultado de la ejecuciTn:
Ejemplo del uso de funciones4 para construir el encaMezado y pie de una pagina CeM4 paso de par]metros4
estilos y uMicaciTn de funciones en fichero aparte.
/e trata de Fue cargar autom]ticamente el encaMezado y el pie de una pagina CeM haciendo la llamada a las
funciones correspondientes4 ademas el nomMre de la secciTn Fue Garia de una pagina a otra se pasa como
par]metro y se ha incluido algo de estilo css
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 5aMecera y pie mediante funcion 6>titleE
6style type(=teHt>css=E
6Nphp
^reFuire(=1Z_@caMecera_y_pie.php=)I
estilo()I
NE
6>styleE
6>headE
6ModyE
6Nphp
>>5argar las funciones
>>^include(=1Z_@caMecera_y_pie.php=)I
print =6pE-unciones cargadas6>pE=I
caMecera(=Esta es la /eccion=)I
NE

67## QFui Ga el contenido Fue podria ser html##E

6Nphp
pie()I
NE
6>ModyE
6>htmlE
-ichero con las funciones:
6Nphp
function caMecera(!seccion)
O
print6665Q<E5EDQ
6diG id(=caMecera=E
6h1E 2i Empresa 6>h1E
6h+E !seccion 6>h+E
6>diGE
5Q<E5EDQI
P
function pie()
O
print666:,E
6diG id(=pie=E
6pE Telefono: LAA@+1+JZ 6>pE
6pE 8ireccion: Mala Mla Mla 6>pE
6>diGE
:,EI
P
function estilo()
O
print666E/T,3O
_caMecera
O
MacSground#color: _EYL8L8I
P
_caMecera h1
O
teHt#transform: capitalizeI
font#size: 1+BVI
font#family:
5omic /ans 2/I
P
E/T,3OI
P
NE
Desultado de la ejecuciTn:
Ejemplo valores por defecto$
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE alores por defecto 6>titleE
6>headE
6ModyE
6Nphp
>[
:odemos hacer Fue los parametros tomen Galores por defecto simplemente
poniendio detras del parametro un igual y el Galor por defecto
[>
function saludo(!mensaje4!color(=teal=)
O
print =Ut6p style(U=color:!colorU=E
!mensaje 6>pEUn=I
P
saludo (=1ola=4=_BBffBB=)I>>aFui usa los Galores Fue hemos puesto
saludo (=1ola=)I>>aFui como no se define color usa el puesto por defecto

function saludo+(!mensaje(=1ola=4!color(=green=)
O
print =Ut6p style(U=color:!colorU=E
!mensaje 6>pEUn=I
P
saludo+ (==4=Mlue=)I>>5omo !mensaje esta Gacio no lo muestra
saludo+ ()I>>aFui usa los dos Galores por defecto
NE
6>ModyE
6>htmlE
Desultado de la ejecuciTn:
Ejemplo de funcin &ue no devuelve nada y valor de retorno$
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE -uncion Fue no deGuelGe nada 6>titleE
6>headE
6ModyE
6Nphp
>[
Ejemplo de funcion Fue =no deGuelGe nada=
print_r escriMe en pantalla pero no deGuelGe lo Fue
esperaMamos4 Fue es una cadena con el array Mien escrito
[>
!Galores%&nomMre&'(&:epito&I
!Galores%&apellido&'(&:erez&I
print &6preE&.print_r(!Galores4 true).&6>preE&I
!cantidad(JI
print =6pE1ay Fue pagar =.numMer_format(!cantidad4+).=WeuroI6>pE=I
>[O\O: Error comun[>
print =6pE1ay Fue pagar numMer_format(!cantidad4+)WeuroI6>pE=I
print =6pEEl resultado de numMer_format(!cantidad4+) es =.numMer_format(!cantidad4+).=6>pE=I

function multiplicar(!n14!n+)
O
!resultado(!n1[!n+I
return !resultadoI>>Galor de retorno
P
!primero(1+I
!segundo(ZI
print =6pEQl multiplicar !primero y !segundo oMtengo =.multiplicar(!primero4!segundo).=6>pE=I
NE
6>ModyE
6>htmlE
Desultado de la ejecuciTn:
El uso de arrays en php'
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Qrrays en :1: 6>titleE

6>headE
6ModyE
6h@EQrrays6>h@E
6Nphp
>[ un array almacena los Galores a partir de la posicion B en adelante [>
!datos1(array(1B4+B4@B4ZB)I>>array Fue contiene los Galores 1B4 +B4 @B y ZB
!datos+(array(1B4+B4=pepe=4ZB)I>>array Fue contiene los Galores 1B4 +B4 pepe y ZB
!datos1%'(1+@I>>pone un Galor mas al array
!datos+%J'(AKYI>>camMia la posicion J (en este caso esta Gacio) del array por AKY
print =Ut6preE=.print_r(!datos14true).=6preEUn=I
print =Ut6preE=.print_r(!datos+4true).=6preEUn=I

>[ un array se recorre con un for 4 el siguiente ejemplo mostrara el contenido de
!datos1 (1B +B @B ZB 1+@) [>
print =6ulE=I
for(!i(BI!i6count(!datos1)I!i00)
O
print =6liE!i#E!datos1%!i'6>liE=I
P
print =6>ulEUn=I

>[ array_Galues deGuelGe todos los Galores no Gacios de un array compactandolo
e indeHandolo numericamente [>
!datos+(array_Galues(!datos+)I
print =6preE=.print_r(!datos+4true).=6>preE=I

print =6ulE=I
for(!i(BI!i6count(!datos+)I!i00)
O
print =6liE!i#E!datos+%!i'6>liE=I
P
print =6>ulEUn=I

>[ foreach se emplea soMre todo para arrays asociatiGos [>
print =6ulE=I
foreach(!datos+ as !claGe (E !Galor)
O
print =6liE!claGe#E!Galor6>liE=I
P
print =6>ulE=I

NE
6>ModyE
6>htmlE
El resultado de la ejecuciTn es:
(rrays
Qrray
(
%B' (E 1B
%1' (E +B
%+' (E @B
%@' (E ZB
%A' (E 1+@
)
Qrray
(
%B' (E 1B
%1' (E +B
%+' (E pepe
%@' (E ZB
%J' (E AKY
)
` B (E 1B
` 1 (E +B
` + (E @B
` @ (E ZB
` A (E 1+@
Qrray
(
%B' (E 1B
%1' (E +B
%+' (E pepe
%@' (E ZB
%A' (E AKY
)
` B (E 1B
` 1 (E +B
` + (E pepe
` @ (E ZB
` A (E AKY
` B (E 1B
` 1 (E +B
` + (E pepe
` @ (E ZB
` A (E AKY
Ejercicio tabla mes (Ejercicio 1J_@Qrray_asociatiGo.php)
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Qrrays asociatiGo 6>titleE

6>headE
6ModyE
6h@E2eses del aao6>h@E
6Nphp
!mes%&enero&'(@1I
!mes%&feMrero&'(+LI
!mes%&marzo&'(@1I
!mes%&aMril&'(@BI
!mes%&mayo&'(@1I
!mes%&junio&'(@BI
!mes%&julio&'(@1I
!mes%&agosto&'(@1I
!mes%&septiemMre&'(@BI
!mes%&octuMre&'(@1I
!mes%&noGiemMre&'(@BI
!mes%&diciemMre&'(@1I

print =6taMle Morder(U=+U=E=I>>le damos un grosor a las lineas de la taMla de + piHel
>[ :onemos primero las caMaceras de la taMla [>
print =6trE
6thE2es6>thE
6thE8ias6>thE
6>trE=I
>[ con una funcion foreach recorremos los arrays escogiendo para cada uno la claGe y Galor asignado [>
foreach(!mes as !claGe (E !Galor)
>[ !claGe es lo Fue esta entre %' (enero4 feMrero4 etc.) y !Galor es lo Fue contiene o su Galor (@14 @B4 etc.)[>
>[ se les has llamado !claGe y !Galor pero se le puede dar otro nomMre [>
O
>[ imprimo las columnas con los datos [>
print =6trE
6tdE!claGe6>tdE
6tdE!Galor6>tdE
6>trE=I
P
print =6>taMleEUn=I


NE
6>ModyE
6>htmlE
El resultado es:
Ejercicio tabla mes ordenado con asort y ksort (Ejercicio 1J_AQrray_asociatiGo_ordenado.php)
El resultado es el siguiente (a la izFuierda usando asort y a la derecha usando Ssort):
El programa es:
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Qrrays asociatiGo 6>titleE
6>headE
6ModyE
6Nphp
!mes%&enero&'(@1I
!mes%&feMrero&'(+LI
!mes%&marzo&'(@1I
!mes%&aMril&'(@BI
!mes%&mayo&'(@1I
!mes%&junio&'(@BI
!mes%&julio&'(@1I
!mes%&agosto&'(@1I
!mes%&septiemMre&'(@BI
!mes%&octuMre&'(@1I
!mes%&noGiemMre&'(@BI
!mes%&diciemMre&'(@1I
print =6h@E2eses ordenados por dias6>h@E=I
print =6taMle Morder(U=+U=E=I>>le damos un grosor a las lineas de la taMla de + piHel
>[ :onemos primero las caMeceras de la taMla [>
print =6trE
6thE2es6>thE
6thE8ias6>thE
6>trE=I
>[ con una funcion foreach recorremos los arrays escogiendo para cada uno la claGe y Galor asignado [>
asort(!mes)I>>con asort se ordena por Galores
foreach(!mes as !claGe (E !Galor)
>[ !claGe es lo Fue esta entre %' (enero4 feMrero4 etc.) y !Galor es lo Fue contiene o su Galor (@14 @B4 etc.)[>
>[ se les has llamado !claGe y !Galor pero se le puede dar otro nomMre [>
O
>[ imprimo las columnas con los datos [>
print =6trE
6tdE!claGe6>tdE
6tdE!Galor6>tdE
6>trE=I
P
print =6>taMleEUn=I

print =6h@E2eses ordenados por mes6>h@E=I
print =6taMle Morder(U=+U=E=I>>le damos un grosor a las lineas de la taMla de + piHel
>[ :onemos primero las caMaceras de la taMla [>
print =6trE
6thE2es6>thE
6thE8ias6>thE
6>trE=I
>[ con una funcion foreach recorremos los arrays escogiendo para cada uno la claGe y Galor asignado [>
Ssort(!mes)I>>con Ssort se ordena por claGes
foreach(!mes as !claGe (E !Galor)
>[ !claGe es lo Fue esta entre %' (enero4 feMrero4 etc.) y !Galor es lo Fue contiene o su Galor (@14 @B4 etc.)[>
>[ se les has llamado !claGe y !Galor pero se le puede dar otro nomMre [>
O
>[ imprimo las columnas con los datos [>
print =6trE
6tdE!claGe6>tdE
6tdE!Galor6>tdE
6>trE=I
P
print =6>taMleEUn=I
NE
6>ModyE
6>htmlE
Ejercicio tabla alumnos
8ado un array darle formato en una taMla.
5ontenido fichero 1L_KTaMla_alumnos.php
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE TaMla Qrrays 6>titleE

6>headE
6ModyE
6h@E3istado alumnos de +WordmI Q/,D6>h@E
6Nphp
>[5arga una Gez los arrays especificados en el archiGo 1L_KQrray_alumnos.php[>
reFuire_once(=1L_KQrray_alumnos.php=)I
print =6taMle Morder(U=+U=E=I>>le damos un grosor a las lineas de la taMla de + piHel
>[ :onemos primero las caMaceras de la taMla [>
print =6trE
6thE.WordmI6>thE
6thEEstudiante6>thE
6thE;suario6>thE
6thEEmail6>thE
6>trE=I
>[ con una funcion for recorremos uno de los arrays Fue es igual en tamaao al resto [>
for(!i(BI!i6count(!students)I!i00)
O
!num(!i01I>>para eGitar el B en la primera posicion le sumo 1
>[ imprimo las columnas con los datos [>
print =6trE
6tdE!num6>tdE
6tdE!students%!i'6>tdE
6tdE!user%!i'6>tdE
6tdE!email%!i'6>tdE
6>trE=I
P
print =6>taMleEUn=I
NE
6>ModyE
6>htmlE
5ontenido fichero 1L_KQrray_alumnos.php
6Nphp
!students%'(=QpellidoB14 .omMreB1=I
!students%'(=QpellidoB+4 .omMreB+=I
!students%'(=QpellidoB@4 .omMreB@=I
!students%'(=QpellidoBA4 .omMreBA=I
!students%'(=QpellidoBK4 .omMreBK=I
!students%'(=Qpellido+Y4 .omMre+Y=I
!students%'(=QpellidoBZ4 .omMreBZ=I
!students%'(=QpellidoBJ4 .omMreBJ=I
!students%'(=QpellidoBL4 .omMreBL=I
!students%'(=Qpellido1B4 .omMre1B=I
!students%'(=Qpellido114 .omMre11=I
!students%'(=Qpellido1+4 .omMre1+=I
!students%'(=Qpellido1@4 .omMre1@=I
!students%'(=Qpellido1A4 .omMre1A=I
!students%'(=Qpellido1K4 .omMre1K=I
!students%'(=Qpellido1Y4 .omMre1Y=I
!students%'(=Qpellido1Z4 .omMre1Z=I
!students%'(=Qpellido1J4 .omMre1J=I
!students%'(=Qpellido1L4 .omMre1L=I
!students%'(=Qpellido+B4 .omMre+B=I
!students%'(=Qpellido+14 .omMre+1=I
!students%'(=Qpellido++4 .omMre++=I
!students%'(=Qpellido+@4 .omMre+@=I
!students%'(=Qpellido+A4 .omMre+A=I
!students%'(=Qpellido+K4 .omMre+K=I
!students%'(=QpellidoBY4 .omMreBY=I
!user%'(=,.+QD@_B1=I
!user%'(=,.+QD@_B+=I
!user%'(=,.+QD@_B@=I
!user%'(=,.+QD@_BA=I
!user%'(=,.+QD@_BK=I
!user%'(=,.+QD@_+Y=I
!user%'(=,.+QD@_BZ=I
!user%'(=,.+QD@_BJ=I
!user%'(=,.+QD@_BL=I
!user%'(=,.+QD@_1B=I
!user%'(=,.+QD@_11=I
!user%'(=,.+QD@_1+=I
!user%'(=,.+QD@_1@=I
!user%'(=,.+QD@_1A=I
!user%'(=,.+QD@_1K=I
!user%'(=,.+QD@_1Y=I
!user%'(=,.+QD@_1Z=I
!user%'(=,.+QD@_1J=I
!user%'(=,.+QD@_1L=I
!user%'(=,.+QD@_+B=I
!user%'(=,.+QD@_+1=I
!user%'(=,.+QD@_++=I
!user%'(=,.+QD@_+@=I
!user%'(=,.+QD@_+A=I
!user%'(=,.+QD@_+K=I
!user%'(=,.+QD@_BY=I
!email%'(=.omMreB1.QpellidoB1^elorrieta#erreSamari.com=I
!email%'(=.omMreB+.QpellidoB+^elorrieta#erreSamari.com=I
!email%'(=.omMreB@.QpellidoB@^elorrieta#erreSamari.com=I
!email%'(=.omMreBA.QpellidoBA^elorrieta#erreSamari.com=I
!email%'(=.omMreBK.QpellidoBK^elorrieta#erreSamari.com=I
!email%'(=.omMre+Y.Qpellido+Y^elorrieta#erreSamari.com=I
!email%'(=.omMreBZ.QpellidoBZ^elorrieta#erreSamari.com=I
!email%'(=.omMreBJ.QpellidoBJ^elorrieta#erreSamari.com=I
!email%'(=.omMreBL.QpellidoBL^elorrieta#erreSamari.com=I
!email%'(=.omMre1B.Qpellido1B^elorrieta#erreSamari.com=I
!email%'(=.omMre11.Qpellido11^elorrieta#erreSamari.com=I
!email%'(=.omMre1+.Qpellido1+^elorrieta#erreSamari.com=I
!email%'(=.omMre1@.Qpellido1@^elorrieta#erreSamari.com=I
!email%'(=.omMre1A.Qpellido1A^elorrieta#erreSamari.com=I
!email%'(=.omMre1K.Qpellido1K^elorrieta#erreSamari.com=I
!email%'(=.omMre1Y.Qpellido1Y^elorrieta#erreSamari.com=I
!email%'(=.omMre1Z.Qpellido1Z^elorrieta#erreSamari.com=I
!email%'(=.omMre1J.Qpellido1J^elorrieta#erreSamari.com=I
!email%'(=.omMre1L.Qpellido1L^elorrieta#erreSamari.com=I
!email%'(=.omMre+B.Qpellido+B^elorrieta#erreSamari.com=I
!email%'(=.omMre+1.Qpellido+1^elorrieta#erreSamari.com=I
!email%'(=.omMre++.Qpellido++^elorrieta#erreSamari.com=I
!email%'(=.omMre+@.Qpellido+@^elorrieta#erreSamari.com=I
!email%'(=.omMre+A.Qpellido+A^elorrieta#erreSamari.com=I
!email%'(=.omMre+K.Qpellido+K^elorrieta#erreSamari.com=I
!email%'(=.omMreBY.QpellidoBY^elorrieta#erreSamari.com=I
NE
El resultado es el siguiente:
Ejercicio )en* seleccin
5ontinuando con el array Fue contiene el listado de alumnos4 realizar un men de selecciTn y una Gez elegido
un alumno Fue presente sus datos.
El array a usar es el fichero 1L_KQrray_alumnos.php anteriormente eHpuesto
5ontenido fichero 1L_K2enu_alumnos1.php
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 2enu desplegaMle Qrrays 6>titleE
6>headE
6ModyE
6h@E/eleccion alumno de +WordmI Q/,D de un desplegaMle6>h@E
6Nphp
>[llamo al otro php para Fue me presente los datos del alumno seleccioando[>
print &6form action(=1L_K,nfo_alumnos.php=E
6pE6select name(=codigo=E&I
>[5arga una Gez los arrays especificados en el archiGo 1L_KQrray_alumnos.php[>
reFuire_once(=1L_KQrray_alumnos.php=)I
>[funcion Fue me presenta todos los estudiantes en el menu desplegaMle[>
for(!i(BI!i6count(!students)I!i00)
O
print =UnUt6option Galue(U=!iU=E=.htmlentities(!students%!i').=6>optionE=I
P
print =Un=.&6>selectE
6input type(=suMmit= Galue(=,nfo=E6>pE
6>formE&I
NE
6>ModyE
6>htmlE
El resultado del programa es el siguiente:
El resultado del suMprograma al Fue llama el programa principal a pinchar en ,nfo es el siguiente:
5ontenido fichero 1L_K,nfo_alumnos.php (/uMprograma Fue presenta los datos del usuario seleccionado).
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE
6Nphp
>[:ongo en el titulo el nomMre del estudiante del Fue pido informacion[>
>[para ello cargo en fichero 1L_KQrray_alumnos.php del Fue saco los datos[>
reFuire_once(=1L_KQrray_alumnos.php=)I
!cod(!_$ET%&codigo&'I
print =,nformacion soMre: =.htmlentities(!students%!cod')I
NE
6>titleE
6>headE
6ModyE
6Nphp
>[imprimo en pantalla la informacion del estudiante seleccionado en el menu[>
>[QFui no pongo un reFuire para cargar 1L_KQrray_alumnos.php porFue ya esta puesto arriMa[>
print =6pEQlumno: !students%!cod'6>pE=I
print =6pE;suario: !user%!cod'6>pE=I
print =6pEEmail: !email%!cod'6>pE=I
NE
6>ModyE
6>htmlE
Tenemos un alumno Fue no esta en orden4 asi Fue con ayuda de asort lo presento en orden.
5ontenido fichero 1L_K2enu_alumnos+.php
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 2enu desplegaMle Qrrays 6>titleE
6>headE
6ModyE
6h@E/eleccion alumno de +WordmI Q/,D de un desplegaMle6>h@E
6Nphp
>[llamo al otro php para Fue me presente los datos del alumno seleccioando[>
print &6form action(=1L_K,nfo_alumnos.php=E6pE
6select name(=codigo=E&I
>[5arga una Gez los arrays especificados en el archiGo 1L_KQrray_alumnos.php[>
reFuire_once(=1L_KQrray_alumnos.php=)I
>[ordeno el array por nomMtre porFue hay un sudiante Fue esta al final pero Fue es el numero BY[>
asort(!students)I
>[funcion Fue me presenta todos los estudiantes en el menu desplegaMle4 en este caso con foreach
para Fue el alumno Fue estaMa al final de la lista salga en su posicion por orden[>
foreach(!students as !indice (E !nomMre)
O
print =UnUt6option Galue(U=!indiceU=E=.htmlentities(!nomMre).=6>optionE=I
P
print =Un=.&6>selectE
6input type(=suMmit= Galue(=,nfo=E6>pE
6>formE&I
NE
6>ModyE 6>htmlE
9 este es el resultado del desplegaMle (ahora el alumnoBY Fue estaMa al final se ha ordenado deMajo del
alumnoBK):
/i tenemos un alumno Fue ademas esta acentuado y Fueremos ordenarlo utilizamos otro parametro4 setlocale
y /ODT_3O5Q3E_/TD,.$.
5ontenido fichero 1L_K2enu_alumnos@.php
678O5T9:E 1T23 :;<3,5 =#>>?@5>>8T8 1T23 A.B1>>E.= =http:>>CCC.C@.org>TD>htmlA>strict.dtd=E
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE 2enu desplegaMle Qrrays 6>titleE
6>headE
6ModyE
6h@E/eleccion alumno de +WordmI Q/,D de un desplegaMle6>h@E
6Nphp
>[llamo al otro php para Fue me presente los datos del alumno seleccioando[>
print &6form action(=1L_K,nfo_alumnos.php=E6pE
6select name(=codigo=E&I
>[5arga una Gez los arrays especificados en el archiGo 1L_KQrray_alumnos.php[>
reFuire_once(=1L_KQrray_alumnos.php=)I
>[setlocale estaMlece la informacion de la configuracion regional[>
setlocale(35_Q334 =sp#/:=>[?indoCs[>4=es_E/=>[Todos los demas[>)I
>[asort ordena el array por nomMtre porFue hay un sudiante Fue esta al final pero es el numero BY
ademas con /ODT_3O5Q3E_/TD,.$ le estoy diciendo Fue no tenga en cuenta acentuaciones y
caracteres especiales
soMre las letras para Fue tamMien ordene un momMre Fue estuGiera acentuado[>
asort(!students4 /ODT_3O5Q3E_/TD,.$)I
>[funcion Fue me presenta todos los estudiantes en el menu desplegaMle4 en este caso con foreach
para Fue el alumno Fue estaMa al final de la lista salga en su posicion por orden[>
foreach(!students as !indice (E !nomMre)
O
print =UnUt6option Galue(U=!indiceU=E=.htmlentities(!nomMre).=6>optionE=I
P
print =Un=.&6>selectE
6input type(=suMmit= Galue(=,nfo=E6>pE
6>formE&I
NE
6>ModyE
6>htmlE
(rray asociativo bidimensional'
6htmlE
6headE
6meta http#eFuiG(=content#type= content(=teHt>htmlI charset(,/O#JJKL#1= E
6titleE Qrray asociatiGo Midimensional 6>titleE
6>headE
6ModyE
6h@E -ormas de mostrar contenido de un array asociatiGo Midimensional 6>h@E
6Nphp
>> B) llamo al archiGo php Fue contiene el array
reFuire_once(=+B_1array_asociatiGo_Midimensional.php=)I
>> 1) muestro el array completo con print_r
print =6pE6ME 1) 2uestro contenido completo del array con &print_r&: 6>ME6>pEUn=I
print =6preE=.print_r(!alumnos4 true). =6>preEUn=I
>> +) otra forma de acceder a un elemento del array
print =6pE6ME +) 2uestro contenido de un elemento del array: 6>ME6>pEUn=I
print =6pE=. !alumnos%&,.+QD@_1Z&'%&nomMre&'. = tiene correo: =.!alumnos%&,.+QD@_1Z&'%&correo&'.
=6>pEUn=I
>> @) con esta funcion (array_Seys) oMtenemos un array de las claGes y lo imprimo
print =6pE6ME @) 2uestro un array de las claGes con &print_r& y la funcion &array_Seys&: 6>ME6>pEUn=I
!claGes(array_Seys(!alumnos)I
print =6preE=.print_r(!claGes4true).=6>preEUn=I
>> A) Decorro con un for el array con las claGes para mostrar todos los elementos4 el paso +) pero para
todos
print =6pE6ME A) 2uestro uno a uno el contenido del array y le doy forma: 6>ME6>pEUn=I
for (!i(BI!i6count(!alumnos)I!i00)
O
print =6pE=.!alumnos%!claGes%!i''%&nomMre&'. = tiene correo: =.!alumnos%!claGes%!i''
%&correo&'.=6>pEUn=I
>>print =6pE=.!alumnos%=!claGes%!i'='%&nomMre&'. = tiene correo: =.!alumnos%=!claGes%!i'='
%&correo&'.=6>pE=I
P
>> K) Decorrer el array directamente
print =6pE6ME K) Decorro el array directamente con un foreach: 6>ME6>pEUn=I
foreach (!alumnos as !usuario (E !info)
O
print =6pEEl usuario !usuario se llama =.!alumnos%!usuario'%&nomMre&'I
print = y su correo es: =.!alumnos%!usuario'%&correo&'.=6>pEUn=I
P
>> Y) Decorrer el array directamente
print =6pE6ME Y) Otra forma de recorrer el array directamente con un foreach: 6>ME6>pEUn=I
foreach (!alumnos as !usuario (E !info)
O
print =6pE;suario: !usuario =I
foreach (!info as !claGe (E !Galor)
O
print = !claGe: !Galor=I
P
print =6>pEUn=I
P
NE
6>ModyE
6>htmlE
#ontenido del array bidimensional'
6Nphp
!alumnos(array(
&,.+QD@_B1& (E array(&nomMre&(E =QlMerdi Qrce4 bepa=4&correo&(E =bepa.QlMerdi^elorrieta#
erreSamari.com=)4
&,.+QD@_B+& (E array(&nomMre&(E =Qlonso bortazar4 ,Man=4&correo&(E =,Man.Qlonso^elorrieta#
erreSamari.com=)4
&,.+QD@_B@& (E array(&nomMre&(E =Qmczaga 2uaoz4 \on Qnder=4&correo&(E
=\onQnder.Qmezaga^elorrieta#erreSamari.com=)4
&,.+QD@_BA& (E array(&nomMre&(E =QramMuru Torre4 2iSel=4&correo&(E =2iSel.QramMuru^elorrieta#
erreSamari.com=)4
&,.+QD@_BK& (E array(&nomMre&(E =QreGalo $arcia4 2arSel=4&correo&(E =2arSel.QreGalo^elorrieta#
erreSamari.com=)4
&,.+QD@_BY& (E array(&nomMre&(E =<olaaos Teso4 \oseMa Qndoni=4&correo&(E =\oseMa.<olanos^elorrieta#
erreSamari.com=)4
&,.+QD@_BZ& (E array(&nomMre&(E =5ondori <ocanegra4 -aGiola=4&correo&(E =-aGiola.5ondori^elorrieta#
erreSamari.com=)4
&,.+QD@_BJ& (E array(&nomMre&(E =EchaMuru Duiz 8e Qzua4 $onzalo=4&correo&(E
=$onzalo.EchaMuru^elorrieta#erreSamari.com=)4
&,.+QD@_BL& (E array(&nomMre&(E =-ernandez 8el :ozo4 \on Qnder=4&correo&(E
=\onQnder.-ernandez^elorrieta#erreSamari.com=)4
&,.+QD@_1B& (E array(&nomMre&(E =-erndndez ;riMarren4 ,tziar=4&correo&(E =,tziar.-ernandez^elorrieta#
erreSamari.com=)4
&,.+QD@_11& (E array(&nomMre&(E =-radejas $ordon4 8iego=4&correo&(E =8iego.-radejas^elorrieta#
erreSamari.com=)4
&,.+QD@_1+& (E array(&nomMre&(E =$aMiaa 2erino4 $orSa=4&correo&(E =$orSa.$aMina^elorrieta#
erreSamari.com=)4
&,.+QD@_1@& (E array(&nomMre&(E =$onzdlez 3arrazaMal=4 Qnder4&correo&(E =Qnder.$onzalez^elorrieta#
erreSamari.com=)4
&,.+QD@_1A& (E array(&nomMre&(E =$uardado 8e 3as 2oras=4 Qndoni4&correo&(E
=Qndoni.$uardado^elorrieta#erreSamari.com=)4
&,.+QD@_1K& (E array(&nomMre&(E =1erndez $arcea4 Qritz=4&correo&(E =Qritz.1ernaez^elorrieta#
erreSamari.com=)4
&,.+QD@_1Y& (E array(&nomMre&(E =,sla Dodriguez4 faMier=4&correo&(E =faMier.,sla^elorrieta#
erreSamari.com=)4
&,.+QD@_1Z& (E array(&nomMre&(E =\imenez 2arin4 2aialen=4&correo&(E =2aialen.\imenez^elorrieta#
erreSamari.com=)4
&,.+QD@_1J& (E array(&nomMre&(E =2azgn $arcia4 ;nai=4&correo&(E =;nai.2azon^elorrieta#
erreSamari.com=)4
&,.+QD@_1L& (E array(&nomMre&(E =2edrano Deguilon4 Qgustin=4&correo&(E =Qgustin.2edrano^elorrieta#
erreSamari.com=)4
&,.+QD@_+B& (E array(&nomMre&(E =2oreno $arcea4 \uan 5arlos=4&correo&(E =\uan5arlos.2oreno^elorrieta#
erreSamari.com=)4
&,.+QD@_+1& (E array(&nomMre&(E =.aGarro $arcia4 \uan QlMerto=4&correo&(E
=\uanQlMerto..aGarro^elorrieta#erreSamari.com=)4
&,.+QD@_++& (E array(&nomMre&(E =.uao eci4 ;nai \esus=4&correo&(E =;nai..uno^elorrieta#
erreSamari.com=)4
&,.+QD@_+@& (E array(&nomMre&(E =/dnchez 5ristoMal4 8iego=4&correo&(E =8iego./anchez^elorrieta#
erreSamari.com=)4
&,.+QD@_+A& (E array(&nomMre&(E =alenciano /anta 5ruz4 \aGier=4&correo&(E =\aGier.alenciano^elorrieta#
erreSamari.com=)4
&,.+QD@_+K& (E array(&nomMre&(E =-reitas 5arneiro 8a 5unha4 bleMer=4&correo&(E
=bleMer.-reitas^elorrieta#erreSamari.com=)4
&,.+QD@_noeHiste& (E array(&nomMre&(E =hlGarez noeHiste4noeHiste=4&correo&(E =noeHiste^elorrieta#
erreSamari.com=)4 )I NE
Ejercicio array asociativo ! dimensin
6titleE Ejercicio Qrray asociatiGo de 1 dimension 6>titleE
6>headE
6ModyE
6h@E Ejercicio Qrray asociatiGo de 1 dimension 6>h@E
6Nphp
>>8efino Qrray asociatiGo de 1 dimension de agentes de la T,Q
!agentes(array(&5hotacaMras gris& (E &:epe 8elgado&4
&<uscarla pintoja& (E &\uan Duiz&4
&/ello 5aludio& (E &\ose 3uis QtHa&4
&:ollizo :ito& (E &EnriFue Qrenas&)I

>>5reamos la taMla con la relacion de agentes
print =6pE6ME Delacion agentes de la T,Q 6>ME6>pE=I
print =6taMle Morder(U=+U=E=I>>le damos un grosor a las lineas de la taMla de + piHel
>>:onemos primero las caMaceras de la taMla
print =6trE
6thE.omMre_claGe6>thE
6thE.omMre_usual6>thE
6>trE=I
>>con una funcion foreach recorro el array y lo imprimo
foreach (!agentes as !claGe (E !usual)
O
print =6trE
6tdE!claGe6>tdE
6tdE!usual6>tdE
6>trE=I
P
print =6>taMleE=I
NE
6>ModyE
6>htmlE

You might also like