Diferencia entre revisiones de «Usuario:ManuelRomero/php/arrays/concepto»
De WikiEducator
< Usuario:ManuelRomero | php
(Página creada con «__NOTOC__ {{:Usuario:ManuelRomero/php/arrays/nav}}») |
|||
(19 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | |||
+ | <!--__NOEDITSECTION__--> | ||
+ | |||
+ | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;" | ||
+ | | width="100%" valign="top" style="padding: 0; margin:0px;" | | ||
+ | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:1px; border-color:#0066FF;" | ||
+ | | width="100%" valign="top" style="padding: 0; margin:0px;" | | ||
+ | <span style="background:#FFFF99"> | ||
+ | </span> | ||
+ | [[Imagen:DWES_TituloTema3_arryas|center]] | ||
+ | |} | ||
__NOTOC__ | __NOTOC__ | ||
− | {{:Usuario:ManuelRomero/php/arrays/nav}} | + | {{#widget:Slides}} |
+ | <!--{{:Usuario:ManuelRomero/php/arrays/nav}}--> | ||
+ | <div class="slides layout-regular template-default"> | ||
+ | <div class="slide"> | ||
+ | ===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. | ||
+ | </div> | ||
+ | |||
+ | <!--1--> | ||
+ | <div class="slide"> | ||
+ | {{Definicion|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. | ||
+ | [[Archivo:arrayPHP.png]] | ||
+ | |||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *Depediendo del valor de la posición podemos clasificar los arraiis de dos tipos | ||
+ | #'''''Indexado'''''. Cada valor es un entero que indica su posición, empezando por cero. | ||
+ | #'''''Asociativo'''''. El valor de cada posición tiene un significado diferente a la posición que ocupa y puede ser de cualquier tipo | ||
+ | <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> | ||
+ | </div> | ||
+ | |||
+ | <!--1--> | ||
+ | <div class="slide"> | ||
+ | ;Arrays asociativos Vs indexados | ||
+ | [[Archivo:array2PHP.png|center]] | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ===Array numéricos o indexados=== | ||
+ | *Clasificación en función de la clave que llevan | ||
+ | #Clave numérica posicional : La clave especifica la posicion de cada elemento | ||
+ | #Clave con valor: La clave tiene un significado por sí mismo y tiene '''asociado''' un valor | ||
+ | ;Arrays indexados | ||
+ | :En los arrays numéricos empezamos por 0 | ||
+ | :En funcion del tipo de índices que tenga puede ser unidimensional o multidimensional (varios índices). | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ===Trabajar con un array=== | ||
+ | *A la hora de trabajar con arrays, hay que saber operar con ellos | ||
+ | #Crear o definir un array | ||
+ | #Asignar, agregar valores al array | ||
+ | #Leer elementos del array | ||
+ | #Borrar elementos del array | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ====Crear un array==== | ||
+ | *Podemos usar el operador '''''array();''''' | ||
+ | *A partir de la versión 5.3 se puede directamente usar el operador '''''[]''''' | ||
+ | *Vemos como crear un array | ||
+ | *En php no hay que especificar ni índice ni lógicamente tipo | ||
+ | *El array como hemos comentado va a ser un conjunto de elementos, cada tipo de cada elemento dependerá del valor que contenga en cada momento , y por supuesto puede ser modificado (tanto el valor como el tipo). | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Crear un array | ||
+ | <source lang=php> | ||
+ | /* | ||
+ | Creamos una variable array llamada miArray vacía | ||
+ | Dos formas equivalentes | ||
+ | */ | ||
+ | $miArray = array(); | ||
+ | $miArray = []; | ||
+ | /* | ||
+ | Creamos un array indexado de ciudades | ||
+ | */ | ||
+ | $miArray = array("burgos","zaragoza","huesca", "teruel","soria"); | ||
+ | $miArray = ["burgos","zaragoza","huesca", "teruel","soria"]; | ||
+ | |||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ====Escribir en un array==== | ||
+ | *Simplemento hay que asignar un valor a una posición del array | ||
+ | *Al ser indexado, si no se pone valor en índice se pondrá una unidad más al último valor asignado | ||
+ | *Si pongo un valor superior al número de índices, el siguiente elemento estará en una posición mas | ||
+ | <source lang=php> | ||
+ | $notas =[]; | ||
+ | $notas[]=10; | ||
+ | $notas[]=7; | ||
+ | $notas[5]= 8; | ||
+ | $notas [] =9; | ||
+ | $notas [] =6; | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Escribir en un array | ||
+ | *Podemos ver gráficamente como queda el array | ||
+ | [[Archivo:arrayNotas.png]] | ||
+ | *En realidad las posiciones no especificadas no existen | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | [[Archivo:arrayNotas2.png]] | ||
+ | *Vemos como la posición 2,3 y 4 no van a existir con valores en el array | ||
+ | *Las puedo usar expícitamente | ||
+ | <source lang=php> | ||
+ | $notas[2]= 8; | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ===Leer un array=== | ||
+ | *Hemos de diferenciar entre dos conceptos | ||
+ | ;Leer un elemento de un array | ||
+ | Simplemente accedemos a su posición por el índice | ||
+ | <source lang=php> | ||
+ | echo "la nota primera es $notas[0]"; | ||
+ | echo "la nota última es $nota[7]"; | ||
+ | </source> | ||
+ | |||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Recorrer un array | ||
+ | *Tenemos difernetes modos de recorre un array, pues el entorno nos ofrece diferentes modos | ||
+ | count($nombreArray); | ||
+ | *Es una función que nos dice cuantos elementos tiene un array que le pasamos como argumentos | ||
+ | *Ejemplo | ||
+ | <source lang=php> | ||
+ | $ciudades = ["burgos","zaragoza","huesca", "teruel","soria"]; | ||
+ | $numeroCiudadades = count($ciudades); | ||
+ | echo "El array tienen $numeroCiudades ciudades<br/>"; | ||
+ | //mostrará 5 ciudades | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Recorrer un array | ||
+ | *Vamos a usarla con un ejemplo | ||
+ | {{MRM_Actividad| | ||
+ | *Creamos 10 notas aleatorias, y posteriormente las visualizamos | ||
+ | *Sacamos la máxima la mínima y la media}} | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | //Creo la variable array de notas | ||
+ | $notas=[]; | ||
+ | |||
+ | |||
+ | //Relleno el array con 10 notas | ||
+ | //$notas = array_fill(0, 10,rand(1,10)); | ||
+ | for ($a=0;$a<10;$a++) | ||
+ | $notas[$a]=rand(1,10); | ||
+ | |||
+ | |||
+ | $min = $notas[0]; | ||
+ | $max = $notas[0]; | ||
+ | for ($a=0;$a<10;$a++){ | ||
+ | echo "Valor de la posición $a = ". $notas[$a]."<br />"; | ||
+ | $total+=$notas[$a]; | ||
+ | $min = $notas[$a]<$min ? $notas[$a] : $min; | ||
+ | $max = $notas[$a]>$max ? $notas[$a] : $max; | ||
+ | } | ||
+ | |||
+ | |||
+ | echo "Valor de la nota media ".($total/10)."<br />"; | ||
+ | echo "Valor minimo".$min."<br />"; | ||
+ | echo "Valor maximo ".$max."<br />"; | ||
+ | </source> | ||
+ | |||
+ | |||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Recorrer un array | ||
+ | *Vemos que si todos los elementos están seguidos este funciona bien, pero si no es así no funcioría correctamete | ||
+ | {{Pregunta|¿Por qué no conviene usar la función count}} | ||
+ | <source lang=php> | ||
+ | $capitales = array(); | ||
+ | $capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"]; | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Recorrer un array | ||
+ | *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> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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() | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | <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> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ===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 | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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: | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | <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> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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> | ||
+ | <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. | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | <!-- | ||
+ | <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> | ||
+ | --> | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | {{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. | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | {{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=html5> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"/> | ||
+ | <meta http-equiv="refresh" content="5" url="index.php"/> | ||
+ | <title></title> | ||
+ | </head> | ||
+ | </div> | ||
+ | </source> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ===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 | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | ;Superglobales | ||
+ | *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: | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ;Superglobales (Algunas principales) | ||
+ | #$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 | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | *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') | ||
+ | </div> | ||
+ | |||
+ | <!--2--> | ||
+ | <div class="slide"> | ||
+ | {{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> | ||
+ | --> | ||
+ | </div> | ||
+ | |} |
Última revisión de 00:23 26 oct 2016
|