Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/INAEM2021/Arrays/concepto»
(→Arrays) |
|||
Línea 109: | Línea 109: | ||
#'''''Indexado'''''. Cada valor es un entero que indica su posición, empezando por cero. | #'''''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. | #'''''Asociativo'''''. El valor de cada posición tiene un significado diferente a la posición que ocupa y puede ser de cualquier tipo. | ||
+ | {{Tip|Aún no hemos visto cómo crear arrays en php, pero observa este código que enseguida veremos cómo se implementa}} | ||
<source lang=php> | <source lang=php> | ||
// array numérico | // array numérico | ||
Línea 131: | Línea 132: | ||
</source> | </source> | ||
<!--1--> | <!--1--> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ===Array numéricos o indexados y Asociativos=== | ||
+ | *Clasificación en función de la clave que llevan: | ||
+ | #Clave numérica posicional : La clave especifica la posición 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. | ||
+ | *El contenido de un elemento de un array puede ser cualquier valor, incluido otro array, puediendo fácilmente construir estructuras mas complejas o arrays N-dimensionales, como veremos en ejemplos posteriores | ||
+ | ;Arrais asociativos | ||
+ | :La clave es un string que tiene un significado especial | ||
+ | *En este tipo de arrays, es como que creamos una collección o diccionario dónde asociamos a cada clave (palabra) un valor. | ||
+ | *Por ejemplos un array de campitales | ||
+ | <source lang=php> | ||
+ | "España"=>"Madrid" | ||
+ | "Francia"=>"Paris" | ||
+ | "Portugal"=>"Lisboa" | ||
+ | </source> | ||
+ | |||
+ | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
;Arrays asociativos Vs indexados | ;Arrays asociativos Vs indexados | ||
Línea 138: | Línea 160: | ||
{{MRM_Actividad|Title = Ejemplo de asignación| | {{MRM_Actividad|Title = Ejemplo de asignación| | ||
*Aunque estos conceptos los analizaremos mas tarde mira el siguiente código | *Aunque estos conceptos los analizaremos mas tarde mira el siguiente código | ||
+ | ;Tratamos de mostrar cómo un array asociativo utiliza las características de array indexado. | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 176: | Línea 199: | ||
<!--2--> | <!--2--> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!--2--> | <!--2--> |
Última revisión de 21:21 11 dic 2023
LENGUAJE PHP: TRABAJANDO CON ESTRUCTURAS DE INFORMACIÓN : ARRAYS
PHP Los Arrays: estructuras de datos fundamentales en php
LENGUAJE PHP: TRABAJANDO CON ESTRUCTURAS DE INFORMACIÓN : ARRAYS ¡El servidor te responde PHP Los Arrays: estructuras de datos fundamentales en php
ContenidoArrays
Tip: Aún no hemos visto cómo crear arrays en php, pero observa este código que enseguida veremos cómo se implementa
// 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"); $modulos1 = [0 => "Programación", 1 => "Bases de datos", ..., 9 => "Desarrollo web en entorno servidor"]; // array asociativo $modulos2 = ["PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"]; Array numéricos o indexados y Asociativos
"España"=>"Madrid" "Francia"=>"Paris" "Portugal"=>"Lisboa"
Podemos pasar de array indexado a asociativo creando un nuevo índice en cualquier momento. En realidad los arrays indexados son un caso especial de array asociativo, en dónde el valor de la clave la genera de forma automátia el sistema. En breve expondremos esta idea que vemos en el ejemplo
Trabajar con un array
Crear un array
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).
/* 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
$notas =[]; $notas[]=10; $notas[]=7; $notas[5]= 8; $notas [] =9; $notas [] =6;
$notas[2]= 8; </div> ;Escribir en un array Podemos ver cómo quedaría el array si realizamos las siguientes modificaciones: <source lang=php> $notas =[]; $notas[]=10; $notas[20]=7; $notas[5]= 8; $notas [1] =9; $notas [2] =6; $notas [] =10; var_dump($notas)
array (size=6) 0 => int 10 20 => int 7 5 => int 8 1 => int 9 2 => int 6 21 => int 10 </source>
$capitales = array("España"=>"Madrid", "Italia"=>"Roma", "Alemania"=>"Berlín"); $capital ["España"=>"Madrid", "Italia"=>"Roma", "Alemania"=>"Berlín"];
$capitales["España"]="Madrid"; $capitales["Italia"]="Roma" $capitales["Alemania"]="Berlín"; Leer un array
Simplemente accedemos a su posición por el índice for ($n=0; $n<8; $n++) $notas[]= rand(1,10); echo "la nota primera es $notas[0]"; echo "la nota de la posición 7 es $nota[7]"; echo "El valor de la variable $notas es -$nota-
la nota primera es 6 la nota de la posición 7 es 8 El valor de la variable $notas es -Array- Vemos como al escribir el nombre del array no veríamos su contenido si no el tipo del valor.
<?php //Inicializo un array de tamaño entre 20 y 30 elementos $tamano = rand(10,15); for ($n = 0; $n<$tamano ; $n++){ $notas[]=rand(0,10); } //Ahora para recorrerlo obtengo el tamaño del array $elementos = sizeof($notas); echo "<h2>Vamos a recorrer un array de $elementos elementos</h2>"; //Reocorro cada elemento for ($n=0; $n<$elementos; $n++){ echo "Valor de la posición $n <b>$notas[$n]</b><br />"; } ?> Vamos a recorrer un array de 12 elementos Valor de la posición 0 8 Valor de la posición 1 6 Valor de la posición 2 6 Valor de la posición 3 10 Valor de la posición 4 9 Valor de la posición 5 3 Valor de la posición 6 6 Valor de la posición 7 7 Valor de la posición 8 2 Valor de la posición 9 6 Valor de la posición 10 4 Valor de la posición 11 10 $ciudades = ["Burgos","Zaragoza","Huesca", "Teruel","Soria"]; $numeroCiudadades = count($ciudades); echo "El array tienen $numeroCiudades ciudades<br/>"; //mostrará 5 ciudades
<?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 mínimo".$min."<br />"; echo "Valor máximo ".$max."<br />";
$capitales = array();//Creo un array vacío. No hace falta hacerlo antes de dar valores $capitales= ["España"=>"Madrid", "Italia"=>"Roma","Alemania"=>"Berlín"];
foreach ($array as $valor){ .... }
foreach ($array as $indice => $valor){ .... }
<?php $capitales =["España"=>"Madrid", "Italia"=>"Roma","Alemania"=>"Berlín"]; $n=0; //Para llevar un control del número de elementos //Accediendo solo a los contendios echo "<h2>Vamos a ver las capitales del array </h2>"; //$capital es el nombre de una variable que ponemos de forma libre (podemos elegir el nombre que queramos) foreach ($capitales as $capital){ echo "La capital de la posición <b>$n</b> es <b>$capital</b><br />"; $n++; } //Si quiero ver también los índices echo "<h2>Vamos a ver los paises con sus capitales del array </h2>"; //Tanto $pais como $capital son nombres de variables que ponemos de forma libre (podemos elegir los nombres que queramos) $n=0; foreach ($capitales as $pais =>$capital){ echo "La capital de la posición <b>$n</b> del país <b>$pais </b> es <b>$capital</b><br />"; $n++; } ?>
Vamos a ver las capitales del array La capital de la posición 0 es Madrid La capital de la posición 1 es Roma La capital de la posición 2 es Berlín Vamos a ver los paises con sus capitales del array La capital de la posición 0 del país España es Madrid La capital de la posición 1 del país Italia es Roma La capital de la posición 2 del país Alemania es Berlín Modificar un array recorrido
Un array de productos de cada uno de los cuales vamos a tener nombre y precio <?php $productos = [ 'lechugas'=> ['precio' => 100, 'unidades'=>50], 'manzanas'=> [ 'precio' => 200, 'unidades'=>100], 'peras'=> [ 'precio' => 300, 'unidades'=>150], 'tomates'=> [ 'precio' => 400, 'unidades'=>200], 'cebollas'=> ['precio' => 500, 'unidades'=>25], ]; echo "<h2>Visualizamos los productos</h2>"; //Para cada producto foreach ($productos as $producto=>$datos){ $precio = $datos['precio']; $unidades = $datos['unidades']; echo "<h3>producto $producto precio $precio unidades $unidades</h3>"; } ?>
echo "<h2>Modificamos el precio (10%) y las unidades en 100 unidades</h2>"; //Para cada producto foreach ($productos as $producto=>$datos){ $datos['precio'] *=1.10; $datos['unidades'] +=100; } echo "<hr />"; //Vovemos a visualizar y vemos que no ha cambiado //Para cada producto echo "<h2>Visualizamos los productos previamente modificados</h2>"; foreach ($productos as $producto=>$datos){ $precio = $datos['precio']; $unidades = $datos['unidades']; echo "<h3>producto $producto precio $precio unidades $unidades</h3>"; }
Si queremos modificarlo, tendríamos que hacer que el valor de $datos estuviera en la misma posoción de memoria que la posición correspondiente del array, y esto se consigue con el operador &, por lo que el bucle sería foreach ($productos as $producto=>&$datos){ en lugar de foreach ($productos as $producto=>$datos){ El código completo que sí que modifica el array sería <?php $productos = [ 'lechugas'=> ['precio' => 100, 'unidades'=>50], 'manzanas'=> [ 'precio' => 200, 'unidades'=>100], 'peras'=> [ 'precio' => 300, 'unidades'=>150], 'tomates'=> [ 'precio' => 400, 'unidades'=>200], 'cebollas'=> ['precio' => 500, 'unidades'=>25], ]; echo "<h2>Visualizamos los productos</h2>"; //Para cada producto foreach ($productos as $producto=>$datos){ $precio = $datos['precio']; $unidades = $datos['unidades']; echo "<h3>producto $producto precio $precio unidades $unidades</h3>"; } //Ahora modificamos el precio un 10% y e incrementamos 100 unidades cada producto echo "<h2>Modificamos el precio (10%) y las unidades en 100 unidades</h2>"; //Para cada producto foreach ($productos as $producto=>$datos){ $datos['precio'] *=1.10; $datos['unidades'] +=100; } echo "<hr />"; //Vovemos a visualizar y vemos que ho ha cambiado //Para cada producto echo "<h2>Visualizamos los productos previamente modificados</h2>"; foreach ($productos as $producto=>$datos){ $precio = $datos['precio']; $unidades = $datos['unidades']; echo "<h3>producto $producto precio $precio unidades $unidades</h3>"; }
current() - Devuelve el elemento actual en un array end() - Establece el puntero interno de un array a su último elemento prev() - Rebobina el puntero interno del array reset() - Establece el puntero interno de un array a su primer elemento each() - Devolver el par clave/valor actual de un array y avanzar el cursor del array key() - Obtiene una clave de un array list() - Asignar variables como si fueran un array next() - Avanza el puntero interno de un array
<?php $capitales = ["España" => "Madrid", "Italia" => "Roma", "Alemania" => "Berlín"]; //Accediendo solo a los contendios echo "<h2>Vamos a ver las capitales del array recorriéndolo como un cursor</h2>"; reset($capitales);//Voy al primer elemento $n = 0; do { $pais = key($capitales); //Obtener el indice actual $capital = current($capitales); //Obtener el valor del elemento actual del array echo "La capital de la posición <b>$n</b> del país <b> $pais </b > es <b > $capital</b ><br />"; $n++; }while (next($capitales)); //Next avanza al siguiente elemento del array, cuando llegue al último dará false ?>
Vamos a ver las capitales del array recorriéndolo como un cursor La capital de la posición 0 del país España es Madrid La capital de la posición 1 del país Italia es Roma La capital de la posición 2 del país Alemania es Berlín Ver el contenido de un array
$miArray = [ "Burgos", "Zaragoza", "Huesca", "Teruel", "Soria" ]; echo "<h3>Mostrando información con var_dump de un array</h3>"; var_dump( $miArray ); //Muestra en tipo y contenido de la expresión $array en este caso un array echo "<h3>Mostrando información con print_R de un array</h3>"; print_r( $miArray ); //Igual que el caso anterior pero con menos información en este caso solo la estructura $valor = "El valor de la variable es "; $valor .= print_r( $miArray, true ); echo "<h3>Ahora muestro el valor de una variable a la que le he asignado lo que devuleve print_r</h3>"; echo $valor;
Funciones para manejar matrices
$modulos1 [9] $modulos2 ["DWES"]
// 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") );
$ciclos ["DAW"] ["DWES"]
// 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";
$modulos1 [ ] = "Programación"; $modulos1 [ ] = "Bases de datos"; ... $modulos1 [ ] = "Desarrollo web en entorno servidor";
<head> <meta charset="UTF-8"/> <meta http-equiv="refresh" content="5" url="index.php"/> <title></title> </head> </div> Variables globales Vs superglobales
</div> |