Diferencia entre revisiones de «Usuario:ManuelRomero/php/arrays/concepto»
De WikiEducator
< Usuario:ManuelRomero | php
(Página creada con «__NOTOC__ {{:Usuario:ManuelRomero/php/arrays/nav}}») |
|||
| Línea 1: | Línea 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{:Usuario:ManuelRomero/php/arrays/nav}} | {{:Usuario:ManuelRomero/php/arrays/nav}} | ||
| + | |||
| + | ===Arrays=== | ||
| + | *Un tipo de datos compuesto es aquel que te permite almacenar más de un valor. | ||
| + | *En PHP puedes utilizar dos tipos de datos compuestos: el array y el objeto. | ||
| + | *Los objetos los veremos más adelante. | ||
| + | |||
| + | *Un array es un tipo de datos que nos permite almacenar varios valores. | ||
| + | *Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un valor clave. | ||
| + | *Las claves pueden ser numéricas o asociativas. | ||
| + | <source lang=php> | ||
| + | // array numérico | ||
| + | $modulos1 = array(0 => "Programación", 1 => "Bases de datos", ..., 9 => "Desarrollo web en entorno servidor"); | ||
| + | // array asociativo | ||
| + | $modulos2 = array("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"); | ||
| + | </source> | ||
| + | ;Tipos de array: | ||
| + | :En función de su clave pueden ser indexados (clave numérica) o asociativos (Clave con valor) | ||
| + | :En los arrays numéricos empezamos por 0 | ||
| + | :En funcion del tipo de índices que tenga rpuede ser unidimensional o multidimensional | ||
| + | ===Crear un array=== | ||
| + | *Podemos usar el operador array(); | ||
| + | <source lang=php> | ||
| + | $capitales = array(); | ||
| + | $capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"]; | ||
| + | </source> | ||
| + | *Es lo mismo que hacer | ||
| + | <source lang=php> | ||
| + | $capitales = array("españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"); | ||
| + | $capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"]; | ||
| + | *También se puede crear directamente co [] | ||
| + | <source lang=php> | ||
| + | $capitales["españa"]="madrid"; | ||
| + | $capitales[["italia"]="roma" | ||
| + | $capitales["Alemania"]="Berlin"; | ||
| + | </source> | ||
| + | *Existen muchas funciones asociadas a los arrays | ||
| + | *count($array) me da el número de elementos | ||
| + | {{Tarea| | ||
| + | Define un array de 5 ciudades y recorrelo con un bucle for usando count() | ||
| + | }} | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | //defino e inicializo el vector | ||
| + | $ciudades[0]="Valencia"; | ||
| + | $ciudades[]="Teruel"; | ||
| + | $ciudades[]="Burgos"; | ||
| + | $ciudades[]="Zaragoza"; | ||
| + | $ciudades[]="Huesca"; | ||
| + | |||
| + | //Obtengo el número de elementos | ||
| + | $num= count($ciudades); | ||
| + | echo "hay $num ciudades"; | ||
| + | for ($n=0; $n<$num; $n++){ | ||
| + | echo "ciudad $n es $ciudades[$n]<br>"; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | |||
| + | ===Ver el contenido de un array=== | ||
| + | *Podemos usar la función ya conocida '''''var_dump()''''' | ||
| + | *También podemos usar la fucnion print_r. | ||
| + | ===Funciones para manejar matrices=== | ||
| + | *Tamaño: count(), sizeof() | ||
| + | *Operador +: concatena dos matrices | ||
| + | *Recorrer una matriz next(), prev(), reset(), current(),key(), reset() | ||
| + | *busqueda preg_grep(), array_search(), in_array() | ||
| + | *Ordenar sort() | ||
| + | *Aquí tenemos un listado de todas las funciones, hay muchas muchas http://es1.php.net/manual/en/ref.array.php | ||
| + | |||
| + | |||
| + | |||
| + | *Para hacer referencia a los elementos almacenados en un array, tienes que utilizar el valor clave entre corchetes: | ||
| + | <source lang=php> | ||
| + | $modulos1 [9] | ||
| + | $modulos2 ["DWES"] | ||
| + | </source> | ||
| + | *Es interesante recordar que en PHP puedes crear también arrays de varias dimensiones almacenando otro array en cada uno de los elementos de un array. | ||
| + | <source lang=php> | ||
| + | // array bidimensional | ||
| + | $ciclos = array( | ||
| + | "DAW" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"), | ||
| + | "DAM" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "PMDM" => "Programación multimedia y de dispositivos móviles") | ||
| + | ); | ||
| + | </source> | ||
| + | *Para hacer referencia a los elementos almacenados en un array multidimensional, debes indicar las claves para cada una de las dimensiones: | ||
| + | <source lang=php> | ||
| + | $ciclos ["DAW"] ["DWES"] | ||
| + | </source> | ||
| + | *En PHP no es necesario que indiques el tamaño del array antes de crearlo. | ||
| + | *Ni siquiera es necesario indicar que una variable concreta es de tipo array. | ||
| + | *Como ya hemos visto, simplemente puedes comenzar a asignarle valores: | ||
| + | <source lang=php> | ||
| + | // array numérico | ||
| + | $modulos1 [0] = "Programación"; | ||
| + | $modulos1 [1] = "Bases de datos"; | ||
| + | ... | ||
| + | $modulos1 [9] = "Desarrollo web en entorno servidor"; | ||
| + | // array asociativo | ||
| + | $modulos2 ["PR"] = "Programación"; | ||
| + | $modulos2 ["BD"] = "Bases de datos"; | ||
| + | ... | ||
| + | $modulos2 ["DWES"] = "Desarrollo web en entorno servidor"; | ||
| + | </source> | ||
| + | *En PHP tampoco es necesario que especifiques el valor de la clave. | ||
| + | *Al omitirla el array se irá llenando a partir de la última clave numérica existente, o de la posición 0 si no existe ninguna: | ||
| + | <source lang=php> | ||
| + | $modulos1 [ ] = "Programación"; | ||
| + | $modulos1 [ ] = "Bases de datos"; | ||
| + | ... | ||
| + | $modulos1 [ ] = "Desarrollo web en entorno servidor"; | ||
| + | </source> | ||
| + | <div class="slide"> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | {{Tarea| | ||
| + | *Generar un array de 10 posiciones de valores enteros entre 1 y 100. | ||
| + | *Recorrer el array, guardando el valor m�ximo y m�nimo y obtener la media | ||
| + | *Mostrar los resultados por pantalla. | ||
| + | }} | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | |||
| + | $notas = array(); | ||
| + | $tamano = rand(1,50); | ||
| + | //Ahora rellenamos el valor de $tamano posiciones del vector | ||
| + | for ($n=0; $n<$tamano;$n++){ | ||
| + | $notas[$n] = rand(1,10); | ||
| + | } | ||
| + | //recorremos calculando minimo, maximo y media | ||
| + | unset($notas[5]); | ||
| + | //El primer valor del vector inicializa las variables | ||
| + | $min = $notas[0]; | ||
| + | $max = $notas[0]; | ||
| + | $suma = $notas[0]; | ||
| + | for ($n=1; $n<count($notas) ;$n++){ | ||
| + | if ($min>$notas[$n]) | ||
| + | $min=$notas[$n]; | ||
| + | if ($max<$notas[$n]) | ||
| + | $max=$notas[$n]; | ||
| + | $suma+=$notas[$n]; | ||
| + | } | ||
| + | echo "La nota máxima es $max<br>"; | ||
| + | echo "La nota mínima es $min<br>"; | ||
| + | echo "La nota media es es". ($suma/$n); | ||
| + | |||
| + | ?> | ||
| + | |||
| + | </source> | ||
| + | {{Tarea| | ||
| + | *Implementar una función que busca si un determinado valor aparece en una matriz. | ||
| + | *La función recibe 2 parámetros: la matriz y el elemento a buscar, y devuelve si ha encontrado el valor (TRUE) o no (FALSE). | ||
| + | |||
| + | #Implementar la función, con los parámetros (el array, y el valor a buscar). | ||
| + | #Para probar la función implementada, generar un array de 100 posiciones de valores enteros entre 1 y 100. #Generar, también, el número que hay que buscar en el array. | ||
| + | #Llamar a la función con el array y el valor como parámetros de la función. | ||
| + | #Mostrar los resultados por pantalla. | ||
| + | }} | ||
| + | {{Tarea| | ||
| + | '''''Random Images''''' | ||
| + | *Escribir un programa que: | ||
| + | **Inicialice un vector con 10 imágenes (podéis utilizar éste [http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/crea_array.txt código.php] que crea el vector $imagenes) | ||
| + | **La página debe mostrar, aleatoriamente, 3 imágenes (puedes usar como alternativa la función shuffle ($imagenes) la cuál desordena el vector), o usar un rand para obtener indices aleatorios. | ||
| + | **Cada 5 segundos ha de refrescarse la página para ir mostrando imágenes distintas (podéis usar, por | ||
| + | ejemplo, este trozo de código HTML y añadirlo en el <HEAD> de la página: | ||
| + | <source lang=html4strict> | ||
| + | <META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php"> | ||
| + | </html> | ||
| + | </source> | ||
| + | }} | ||
| + | <source lang=html4strict> | ||
| + | <!DOCTYPE html> | ||
| + | <!-- | ||
| + | To change this license header, choose License Headers in Project Properties. | ||
| + | To change this template file, choose Tools | Templates | ||
| + | and open the template in the editor. | ||
| + | --> | ||
| + | <html> | ||
| + | <head> | ||
| + | <meta charset="UTF-8"/> | ||
| + | <meta http-equiv="refresh" content="5" url="index.php"/> | ||
| + | <title></title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <?php | ||
| + | $imagenes = array( | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/a_piece_for_the_wicked_vol_1.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/double_t.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/flagrantly_yours.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/gothic.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/iliad_of_a_wolverhampton_wanderer.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/libertine.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/lullabies_for_tough_guys.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/nocturnal_nomad.jpg", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/the_idle_gait_of_the_self_possessed.gif", | ||
| + | "http://www.tecn.upf.es/~ocelma/cpom/practicas/php/random_images/discography/the_life_and_times_of_a_ballad_monger.jpg" | ||
| + | ); | ||
| + | $n1=rand(0,9); | ||
| + | $n2=rand(0,9); | ||
| + | $n3=rand(0,9); | ||
| + | echo "<img src=$imagenes[$n1]><img src=$imagenes[$n2]><img src=$imagenes[$n3]>"; | ||
| + | ?> | ||
| + | </body> | ||
| + | </html> | ||
| + | </source> | ||
| + | |||
| + | ===Variables globales Vs superglobales=== | ||
| + | *Ya hemos visto como en php una variable tiene el ámbito en el cual es accesible y visible | ||
| + | *Las variables son locales a la función en la cual aparecen, si queremos acceder dentro de una función a una variable del script y actuar sobre su valor, debemos hacerla '''''global'''''. | ||
| + | *PHP Dispone un un importante conjunto de variables superglobales. | ||
| + | *El desarrollador tiene acceso a dichas variables en cualquier momento del script. | ||
| + | *El sistema se encarga de tenerlas actualizadas, con el valor correspondiente | ||
| + | *PHP incluye unas Son variables internas predefinidas que pueden usarse desde cualquier ámbito, por lo que reciben el nombre de variables superglobales. | ||
| + | *No es necesario que uses global para acceder a ellas. | ||
| + | |||
| + | *Cada una de estas variables es un '''''array''''' que contiene un conjunto de valores | ||
| + | *Posteriormente veremos cómo se utilizan los arrays). | ||
| + | *Aquí puedes acceder a las variables [http://es.php.net/manual/es/language.variables.superglobals.php superglobales] disponibles en PHP se pueden ver son las siguientes: | ||
| + | *Son las siguientes | ||
| + | #$GLOBALS Hace referencia a todas las variables disponibles en el ámbito global | ||
| + | #$_SERVER Información del entorno del servidor y de ejecución | ||
| + | #$_GET Variables HTTP GET | ||
| + | #$_POST Variables HTTP POST | ||
| + | #$_FILES Variables de Carga de Archivos HTTP | ||
| + | #$_COOKIE Cookies HTTP | ||
| + | #$_SESSION Variables de sesión | ||
| + | #$_REQUEST Variables HTTP REQUEST. Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE. | ||
| + | #$_ENV | ||
| + | *Analizaremos una de ellas | ||
| + | ;$_SERVER. | ||
| + | :Contiene información sobre el entorno del servidor web y de ejecución. Entre la información que nos ofrece esta variable, tenemos: | ||
| + | :Principales valores de la variable $_SERVER | ||
| + | #$_SERVER['PHP_SELF']: script que se está ejecutando actualmente. | ||
| + | #$_SERVER['SERVER_ADDR']: dirección IP del servidor web. | ||
| + | #$_SERVER['SERVER_NAME']: nombre del servidor web. | ||
| + | #$_SERVER['DOCUMENT_ROOT']: directorio raíz bajo el que se ejecuta el guión actual. | ||
| + | #$_SERVER['REMOTE_ADDR']:dirección IP desde la que el usuario está viendo la página. | ||
| + | #$_SERVER['REQUEST_METHOD']:método utilizado para acceder a la página ('GET', 'HEAD', 'POST' o 'PUT') | ||
| + | {{Actividad| Haz un script que nos de la información de las variables vistas anteriormente}} | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | |||
| + | $datos = $_SERVER; | ||
| + | foreach ($datos as $indice => $valor){ | ||
| + | echo ("Valor de $indice es $valor<br>"); | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
Revisión de 05:01 13 feb 2015
Arrays
- Un tipo de datos compuesto es aquel que te permite almacenar más de un valor.
- En PHP puedes utilizar dos tipos de datos compuestos: el array y el objeto.
- Los objetos los veremos más adelante.
- Un array es un tipo de datos que nos permite almacenar varios valores.
- Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un valor clave.
- Las claves pueden ser numéricas o asociativas.
// array numérico $modulos1 = array(0 => "Programación", 1 => "Bases de datos", ..., 9 => "Desarrollo web en entorno servidor"); // array asociativo $modulos2 = array("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor");
- Tipos de array
- En función de su clave pueden ser indexados (clave numérica) o asociativos (Clave con valor)
- En los arrays numéricos empezamos por 0
- En funcion del tipo de índices que tenga rpuede ser unidimensional o multidimensional
Crear un array
- Podemos usar el operador array();
$capitales = array(); $capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"];
- Es lo mismo que hacer
$capitales = array("españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"); $capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"]; *También se puede crear directamente co [] <source lang=php> $capitales["españa"]="madrid"; $capitales[["italia"]="roma" $capitales["Alemania"]="Berlin";
- Existen muchas funciones asociadas a los arrays
- count($array) me da el número de elementos
<?php //defino e inicializo el vector $ciudades[0]="Valencia"; $ciudades[]="Teruel"; $ciudades[]="Burgos"; $ciudades[]="Zaragoza"; $ciudades[]="Huesca"; //Obtengo el número de elementos $num= count($ciudades); echo "hay $num ciudades"; for ($n=0; $n<$num; $n++){ echo "ciudad $n es $ciudades[$n]<br>"; } ?>
Ver el contenido de un array
- Podemos usar la función ya conocida var_dump()
- También podemos usar la fucnion print_r.
Funciones para manejar matrices
- Tamaño: count(), sizeof()
- Operador +: concatena dos matrices
- Recorrer una matriz next(), prev(), reset(), current(),key(), reset()
- busqueda preg_grep(), array_search(), in_array()
- Ordenar sort()
- Aquí tenemos un listado de todas las funciones, hay muchas muchas http://es1.php.net/manual/en/ref.array.php
- Para hacer referencia a los elementos almacenados en un array, tienes que utilizar el valor clave entre corchetes:
$modulos1 [9] $modulos2 ["DWES"]
- Es interesante recordar que en PHP puedes crear también arrays de varias dimensiones almacenando otro array en cada uno de los elementos de un array.
// array bidimensional $ciclos = array( "DAW" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"), "DAM" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "PMDM" => "Programación multimedia y de dispositivos móviles") );
- Para hacer referencia a los elementos almacenados en un array multidimensional, debes indicar las claves para cada una de las dimensiones:
$ciclos ["DAW"] ["DWES"]
- En PHP no es necesario que indiques el tamaño del array antes de crearlo.
- Ni siquiera es necesario indicar que una variable concreta es de tipo array.
- Como ya hemos visto, simplemente puedes comenzar a asignarle valores:
// array numérico $modulos1 [0] = "Programación"; $modulos1 [1] = "Bases de datos"; ... $modulos1 [9] = "Desarrollo web en entorno servidor"; // array asociativo $modulos2 ["PR"] = "Programación"; $modulos2 ["BD"] = "Bases de datos"; ... $modulos2 ["DWES"] = "Desarrollo web en entorno servidor";
- En PHP tampoco es necesario que especifiques el valor de la clave.
- Al omitirla el array se irá llenando a partir de la última clave numérica existente, o de la posición 0 si no existe ninguna:
$modulos1 [ ] = "Programación"; $modulos1 [ ] = "Bases de datos"; ... $modulos1 [ ] = "Desarrollo web en entorno servidor";
