Diferencia entre revisiones de «Usuario:ManuelRomero/php/arrays/concepto»

De WikiEducator
Saltar a: navegación, buscar
(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


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.


Icon define.gif

Definición

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.

ArrayPHP.png

  • Depediendo del valor de la posición podemos clasificar los arraiis de dos tipos
  1. Indexado. Cada valor es un entero que indica su posición, empezando por cero.
  2. Asociativo. El valor de cada posición tiene un significado diferente a la posición que ocupa y puede ser de cualquier tipo
// 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");
Arrays asociativos Vs indexados
Array2PHP.png

Array numéricos o indexados

  • Clasificación en función de la clave que llevan
  1. Clave numérica posicional : La clave especifica la posicion de cada elemento
  2. 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).

Trabajar con un array

  • A la hora de trabajar con arrays, hay que saber operar con ellos
  1. Crear o definir un array
  2. Asignar, agregar valores al array
  3. Leer elementos del array
  4. Borrar elementos del array

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).
Crear un array
/*
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"];

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
$notas =[];
$notas[]=10; 
$notas[]=7;
$notas[5]= 8;
$notas [] =9;
$notas [] =6;
Escribir en un array
  • Podemos ver gráficamente como queda el array

ArrayNotas.png

  • En realidad las posiciones no especificadas no existen

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
$notas[2]= 8;

Leer un array

  • Hemos de diferenciar entre dos conceptos
Leer un elemento de un array

Simplemente accedemos a su posición por el índice

echo "la nota primera es $notas[0]";
echo "la nota última es $nota[7]";
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
$ciudades = ["burgos","zaragoza","huesca", "teruel","soria"];
$numeroCiudadades = count($ciudades);
echo "El array tienen $numeroCiudades ciudades<br/>";
//mostrará 5 ciudades
Recorrer un array
  • Vamos a usarla con un ejemplo


Icon activity.jpg
Actividad
  • Creamos 10 notas aleatorias, y posteriormente las visualizamos
  • Sacamos la máxima la mínima y la media


    <?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 />";


Recorrer un array
  • Vemos que si todos los elementos están seguidos este funciona bien, pero si no es así no funcioría correctamete



Icon qmark.gif

Pregunta

¿Por qué no conviene usar la función count


$capitales = array();
$capital ["españa"=>"madrid", "italia"=>"roma","Alemania"=>"Berlin"];
Recorrer un array
  • 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.


Icon assess.gif

Tarea

Define un array de 5 ciudades y recorrelo con un bucle for usando count()




<?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";


Icon assess.gif

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.





Icon assess.gif

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).
  1. Implementar la función, con los parámetros (el array, y el valor a buscar).
  2. 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.
  3. Llamar a la función con el array y el valor como parámetros de la función.
  4. Mostrar los resultados por pantalla.





Icon assess.gif

Tarea

Random Images

  • Escribir un programa que:
    • Inicialice un vector con 10 imágenes (podéis utilizar éste 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




<head>
        <meta charset="UTF-8"/>
        <meta http-equiv="refresh" content="5" url="index.php"/>
        <title></title>
    </head>
</div>

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
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 superglobales disponibles en PHP se pueden ver son las siguientes:
Superglobales (Algunas principales)
  1. $GLOBALS Hace referencia a todas las variables disponibles en el ámbito global
  2. $_SERVER Información del entorno del servidor y de ejecución
  3. $_GET Variables HTTP GET
  4. $_POST Variables HTTP POST
  5. $_FILES Variables de Carga de Archivos HTTP
  6. $_COOKIE Cookies HTTP
  7. $_SESSION Variables de sesión
  8. $_REQUEST Variables HTTP REQUEST. Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE.
  9. $_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
  1. $_SERVER['PHP_SELF']: script que se está ejecutando actualmente.
  2. $_SERVER['SERVER_ADDR']: dirección IP del servidor web.
  3. $_SERVER['SERVER_NAME']: nombre del servidor web.
  4. $_SERVER['DOCUMENT_ROOT']: directorio raíz bajo el que se ejecuta el guión actual.
  5. $_SERVER['REMOTE_ADDR']:dirección IP desde la que el usuario está viendo la página.
  6. $_SERVER['REQUEST_METHOD']:método utilizado para acceder a la página ('GET', 'HEAD', 'POST' o 'PUT')


Icon activity.jpg

Actividad

Haz un script que nos de la información de las variables vistas anteriormente