Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/INAEM2021/Arrays/concepto»
(→Arrays) |
|||
Línea 30: | Línea 30: | ||
;Ejemplos de arrays | ;Ejemplos de arrays | ||
*Vamos a pensar casos en los que surge el uso de arrays: | *Vamos a pensar casos en los que surge el uso de arrays: | ||
− | {{ | + | {{Plegable|Hide|Notas de los alumnos en general para estadísticas| |
*Tengo 40 alumnos en clase | *Tengo 40 alumnos en clase | ||
<source lang=php> | <source lang=php> |
Revisión de 20:00 9 ene 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
// 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"];
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
Array numéricos o indexados
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> |