Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/INAEM2021/Arrays/ejercicios»

De WikiEducator
Saltar a: navegación, buscar
(Tienda de verduras)
Línea 80: Línea 80:
 
}}
 
}}
  
{{Actividad|Title=Array de 5 ciudades|
+
{{:Usuario:ManuelRomero/ProgramacionWeb/Arrays/nav}}
Crea un array indexado con 5 valores de ciudades y recórrelo con un for y con un foreach. Observa las diferencias.
+
<br />
Cara a nuestra formación intentaremos usar siempre un foreach}}
+
==Acciones básicas sobre arrays==
 +
*En esta sección son  de accions básicas sobre arrays.
  
 +
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio1|Ejercicio 1 : Recorrer un array básico]]===
 +
<br />
 +
{{Actividad|Title=Ejercicio 1: Recorrer una array básico|
 +
*Crea un array indexado con 5 valores de países y recórrelo con un for
 +
*Ahora  crea un array con 5 países como índice y sus correspondiente capitales como valores
 +
*Después recorrelo con un foreach
 +
}}
 +
 +
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio2 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio2 | Solución]]</font>
 +
-->
 
<hr/>
 
<hr/>
{{MRM_Actividad|Crea un array con 10 notas aleatorias y posteriormente las visualizas obteniendo los valores  
+
 
estadísticos de la  media, máxima y mínima}}
+
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio2|Ejercicio 2 : Manipulando un array]]===
 +
 
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 2: Manipulando un array|
 +
;Asignando y elmininando valores
 +
*Creamos un array asingnándole 5 valores de forma indexada
 +
*Asigna valores entero, cadenas, y la quinta posición que sea otro array de tres elementos
 +
*Lo visualizamos con un '''''var_dump'''''
 +
*Agregamos valores en posiciones 15 y 30
 +
*Lo visualizamos con un '''''var_dump'''''
 +
*Eliminamos los índices vacíos de forma que quede compacto (sin usar funciones)
 +
**Es decir las desaparecen las posiciones 15 y 30
 +
**Sus valores se mantienen en las posicones 5 y 6
 +
}}
 +
<br />
 +
 
 +
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio3|Ejercicio 3 : Crear un array de notas]]===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 3 : Crear un array de notas|
 +
Crea un array con 10 notas aleatorias y posteriormente las visualizas obteniendo los valores estadísticos de la  media, máxima y mínima
 +
*Hazlo de forma algorítmica, sin usar funciones de arrays
 +
}}
 +
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio3 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio3 | Solución]]</font>
 
<hr/>
 
<hr/>
{{MRM_Actividad|Crea un array con imagenes aleatorias y luego haz que se carguen cada 5 segundos de forma aleatoria}}
+
-->
 +
 
 +
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio4|Ejercicio 4 : Usando funciones de arrays]]===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 4 : Usando funciones de array|
 +
Repite el ejercicio anterior usando funciones para todas las acciones
 +
 
 +
*Crea un array de notasde 15 alumnos Inicializadas con 0
 +
*Asiga a cada nota un valor aleatorio entre 5 y 10
 +
*Visualiza el array y verfica sus valores
 +
*Obtener la nota máxima, la mínima y la media del array
 +
;Ahora continuamos usando más funciones vistas en la teoría
 +
*Crea otro array de notas de 15 alumnos con notas entre 0 y 5
 +
*Junta los dos array en uno solo
 +
*Vuelve a realizar las acciones anteriores (max, min y media)
 +
*Recorre el array con un foreach
 +
*REaliza el recorrido con las funciones de recorrido especificadas anteriormente, mostrando en cada caso el ínice  y valor  (next, reset, current, key)
 +
*Busca el primer 10 en el array y devuelve su posición
 +
*Confirma si hay un 7 y un 4 como valores dentro del array
 +
*Ordena el array ascendentemente y muéstralo
 +
*Ordena el array descendentemente y muéstralo
 +
*Elimina valores repetidos y muéstralos
 +
 
 +
}}
 +
 
 +
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio5|Ejercicio 5 : Imágenes aleatorias]]===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 5 : Imágenes aleatorias|
 +
*Crea un array con imagenes aleatorias y luego haz que se carguen cada 5 segundos de forma aleatoria.
 +
*Es muy importante que las 3 imágenes no se puedan repetir, que sean diferentes
  
 
{{Tip|Para recargar de forma periódica la página pasados unos segundos podemos usar el meta de html
 
{{Tip|Para recargar de forma periódica la página pasados unos segundos podemos usar el meta de html
Línea 96: Línea 158:
 
<META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php">
 
<META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php">
 
</source>
 
</source>
}}
+
;Como array de imágenes podemos tomar estas:
 
<source lang=php>
 
<source lang=php>
"https://image.shutterstock.com/image-photo/young-woman-skateboarder-skateboarding-city-600w-664570948.jpg"
+
$array=[
"https://gratisography.com/wp-content/uploads/2019/05/shutterstock-its-not-stock-block-new.jpg"
+
"https://es.wikieducator.org/images/3/3d/Ajax_cliente_servidor.png",
"https://www.cerotec.net/data/fotos/gratisography.jpg"
+
"https://cdn.pixabay.com/photo/2019/09/29/20/34/athens-4514311__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/10/24/18/36/forest-4574893__340.jpg"
+
"https://cdn.pixabay.com/photo/2015/09/26/13/25/halloween-959049__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/09/11/09/27/people-4468350__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/10/23/18/58/malai-4572548__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/06/25/05/19/waterfall-4297450__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/10/23/10/47/aesthetic-4571211__340.jpg"
+
"https://cdn.pixabay.com/photo/2019/10/23/18/32/freudenberg-4572410__340.jpg"
+
</source>
+
  
{{Plegable|hide|Posible solución|
+
"https://es.wikieducator.org/images/7/7b/Funcionamiento_ajax.png",
<source lang=php>
+
"https://es.wikieducator.org/images/a/aa/Angular_app_base.png",
 +
"https://es.wikieducator.org/images/3/3d/Docker_distancia_1.png",
  
<?php
+
"https://es.wikieducator.org/images/4/4e/Opcion_Instalar.png",
//Declaramos el array
+
"https://es.wikieducator.org/images/a/ab/AplicacionWeb.png",
$imagenes = [
+
"https://es.wikieducator.org/images/e/e4/Red3.png",
    "https://image.shutterstock.com/image-photo/young-woman-skateboarder-skateboarding-city-600w-664570948.jpg",
+
"https://es.wikieducator.org/images/f/f2/DACTW.png",
    "https://gratisography.com/wp-content/uploads/2019/05/shutterstock-its-not-stock-block-new.jpg",
+
"https://es.wikieducator.org/images/e/e5/M3_web.png",
    "https://www.cerotec.net/data/fotos/gratisography.jpg",
+
"https://es.wikieducator.org/images/a/a6/Ficheros.jpeg"];
    "https://cdn.pixabay.com/photo/2019/09/29/20/34/athens-4514311__340.jpg",
+
</source>
    "https://cdn.pixabay.com/photo/2019/10/24/18/36/forest-4574893__340.jpg",
+
}}
    "https://cdn.pixabay.com/photo/2015/09/26/13/25/halloween-959049__340.jpg",
+
    "https://cdn.pixabay.com/photo/2019/09/11/09/27/people-4468350__340.jpg",
+
    "https://cdn.pixabay.com/photo/2019/10/23/18/58/malai-4572548__340.jpg",
+
    "https://cdn.pixabay.com/photo/2019/06/25/05/19/waterfall-4297450__340.jpg",
+
    "https://cdn.pixabay.com/photo/2019/10/23/10/47/aesthetic-4571211__340.jpg",
+
    "https://cdn.pixabay.com/photo/2019/10/23/18/32/freudenberg-4572410__340.jpg"
+
];
+
  
/*Primera opción de solución para obtener las tres posiciones*/
+
}}
  
//Generar 3 posiciones aleatorias NO REPETIDAS
+
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio6|Ejercicio 6 : Tienda de verduras]]===
$size = sizeof($imagenes)-1;
+
<br />
$pos1 = rand (0,$size);
+
{{MRM_Actividad|Title=Ejercicio 6 : Tienda de verduras|
 
+
//Generamos la segunda posición
+
$pos2 = rand (0,$size);
+
//Verificamos que no coincida con la primera
+
while ($pos2==$pos1)
+
    $pos2 = rand (0,$size);
+
 
+
//Generamos la tercera posición
+
$pos3 = rand (0,$size);
+
//Verificamos que no coincida con la primera ni con la segunda
+
while (($pos3==$pos2)||( $pos3 == $pos1))
+
    $pos3 = rand (0,$size);
+
 
+
$posiciones =[ $pos1, $pos2, $pos3];
+
/*Segunda opción de solución para obtener las tres posiciones*/
+
/*En este caso usamos la estructura do{..}while(); en lugar de un wile
+
Esta estructura a diferencia de la anterior,
+
siempre va a ejecutar una vez
+
el contenido de la estructura de control.
+
*/
+
 
+
//Generar 3 posiciones aleatorias NO REPETIDAS
+
$size = sizeof($imagenes)-1;
+
$pos1 = rand (0,$size);
+
 
+
//Generamos la segunda posición
+
do {
+
    $pos2 = rand(0, $size);
+
}while ($pos2==$pos1);
+
//Verificamos que no coincida con la primera
+
 
+
//Generamos la tercera posición
+
do {
+
    $pos3 = rand(0, $size);
+
}while (($pos3==$pos2)||( $pos3 == $pos1));
+
//Verificamos que no coincida con la primera ni con la segunda
+
 
+
$posiciones =[ $pos1, $pos2, $pos3];
+
 
+
 
+
 
+
/*Tercera  opción
+
Usamos la función array_rand
+
Esta función me retorna  posiciones aleatorias de un array,
+
y me lo retorna en otro array
+
*/
+
$posiciones = array_rand($imagenes, 3);
+
//Prueba a hacer un var_dump de $posiciones
+
 
+
 
+
?>
+
 
+
<!doctype html>
+
<html lang="en">
+
<head>
+
    <meta charset="UTF-8">
+
    <meta name="viewport"
+
    <meta http-equiv="Refresh" content="3">
+
    <title>Document</title>
+
</head>
+
<body>
+
 
+
<h1>Imágenes</h1>
+
 
+
<?php
+
foreach ($posiciones as $posicion) {
+
    echo "<img width='300' src='$imagenes[$posicion]'>";
+
}
+
?>
+
 
+
</body>
+
</html>
+
 
+
 
+
</source>
+
}}
+
===Tienda de verduras===
+
 
Dada una tienda de verduras con los siguientes productos
 
Dada una tienda de verduras con los siguientes productos
 
<source lang=php>
 
<source lang=php>
Línea 227: Línea 196:
 
];
 
];
 
</source>
 
</source>
{{plegable|hide|ejemplo recorrer el array|
 
<source lang=php>
 
<?php
 
$tienda =    ['lechuga' => ['unidades' => 200,
 
'precio' => 0.90],
 
'tomates' =>['unidades' => 2000,
 
'precio' => 2.15],
 
'cebollas' =>['unidades' => 3200,
 
'precio' => 0.49],
 
'fresas' =>['unidades' => 4800,
 
'precio' => 4.50],
 
'manzanas' =>['unidades' => 2500,
 
'precio' => 2.10]
 
];
 
 
 
foreach ( $tienda as $producto => $datos )
 
 
  echo "<h1> $producto hay {$datos['unidades']}  unidades  {$datos['precio']} €</h1>";
 
 
 
 
?>
 
</source>
 
 
 
}}
 
 
*Realiza una aplicación con un formulario para poder comprar productos  
 
*Realiza una aplicación con un formulario para poder comprar productos  
 
*Tras la compra se visualizará la factura del producto siempre que haya unidades
 
*Tras la compra se visualizará la factura del producto siempre que haya unidades
 
*Se mostrará las unidades que quedan de cada producto
 
*Se mostrará las unidades que quedan de cada producto
{{plegable|hide|Posible solución|
 
<source lang=php>
 
 
 
<?php
 
$tienda = [
 
    'lechuga' => ['unidades' => 200,
 
        'precio' => 0.90],
 
    'tomates' => ['unidades' => 2000,
 
        'precio' => 2.15],
 
    'cebollas' => ['unidades' => 3200,
 
        'precio' => 0.49],
 
    'fresas' => ['unidades' => 4800,
 
        'precio' => 4.50],
 
    'manzanas' => ['unidades' => 2500,
 
        'precio' => 2.10],
 
];
 
if (isset($_POST['submit'])) {
 
//Leo la compra
 
    $compra = $_POST['compra'];
 
 
//generar la factura
 
//Para ello leemos cada producto comprado y voy actualizando
 
 
    $factura = "";
 
    $total = 0;
 
    foreach ($compra as $producto => $unidades) {
 
        if ($unidades > 0) { //solo si he comprado, si no, no incluyo en la factura
 
            $precio = $tienda[$producto]['precio'];
 
            if ($unidades > $tienda[$producto]['unidades'])
 
                $unidades = $tienda[$producto]['unidades'];
 
            $subtotal = $precio * $unidades;
 
 
            //Para establecer plural en la palabra unidad o unidades
 
            $plural = $unidades > 1 ? "es" : "";
 
 
            $factura .= "$unidades unidad$plural de $producto a $precio = $subtotal<br />";
 
            $total = $total + $subtotal;
 
        }
 
    }
 
    $factura .= "Total = $total Euros";
 
 
 
    //generar un informe con los productos que quedan
 
    //Lo podría hacer en el bucle anterior, es muy parecido
 
    $informe = "";
 
    foreach ($compra as $producto => $unidades) {
 
        if ($unidades > 0) { //solo si he comprado, si no, no incluyo en la factura
 
            $unidades_iniciales = $tienda[$producto]['unidades'];
 
            if ($unidades > $unidades_iniciales)
 
                $unidades = $unidades_iniciales;
 
 
            $resto_unidades = $unidades_iniciales - $unidades;
 
            $informe .= "De $producto había $unidades_iniciales y quedan $resto_unidades unidades.<br />";
 
        }
 
    }
 
 
}
 
 
?>
 
<!doctype html>
 
<html lang="en">
 
<head>
 
    <meta charset="UTF-8">
 
    <meta name="viewport"
 
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 
    <title>Document</title>
 
</head>
 
<body>
 
<fieldset>
 
    <legend>Datos para comprar</legend>
 
    <form action="index.php" method="post">
 
        <?php
 
        foreach ($tienda as $producto => $datos) {
 
            echo "<label for='$producto'>" . ucfirst($producto) . "</label> ({$datos['precio']})€&nbsp&nbsp";
 
            echo "<input type='text' name='compra[$producto]' id='$producto' /> <br />\n";
 
        }
 
        ?>
 
        <input type="submit" value="Comprar" name="submit">
 
    </form>
 
    <!--Visualizar la factuar -->
 
</fieldset>
 
<?php if (isset($factura)): ?>
 
    <h1>Factura </h1>
 
    <fieldset>
 
        <legend>Detalle de la factura</legend>
 
        <?= $factura ?>
 
    </fieldset>
 
    <fieldset>
 
        <legend>Informe de estado de la tienda</legend>
 
        <?= $informe ?>
 
    </fieldset>
 
<?php endif ?>
 
</body>
 
</html>
 
</source>
 
 
}}
 
}}
  
===Contar accesos de usuarios identificados===
+
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio7|Ejercicio 7 : Accesos de usuario]]===
 
<br />
 
<br />
{{Actividad|
+
{{MRM_Actividad|Title=Ejercicio 7 : Accesos de usuario|
 
;Creamos una aplicación dónde los usuarios se identifican (una caja de texto para identificarse)
 
;Creamos una aplicación dónde los usuarios se identifican (una caja de texto para identificarse)
 
:Luego iremos contando cada vez que un usuario hace un click
 
:Luego iremos contando cada vez que un usuario hace un click
Línea 407: Línea 252:
 
}}
 
}}
  
 +
===[[Usuario:ManuelRomero/ProgramacionWeb/Arrays/ejercicios/ejercicio8|Ejercicio 8 : Array multinivel]]===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 8 : Array multinivel|
 
;Vamos a realizar un recorrido de un array asociativo de varios niveles.
 
;Vamos a realizar un recorrido de un array asociativo de varios niveles.
 
:Realizaremos un estudio del array y luego lo recorreremos
 
:Realizaremos un estudio del array y luego lo recorreremos
{{Actividad|
+
 
 
;Dado un fichero que contiene un array asociativo
 
;Dado un fichero que contiene un array asociativo
 
;El array contiene información de cantantes y de cada cantante su nombre, su década y canciones que tiene
 
;El array contiene información de cantantes y de cada cantante su nombre, su década y canciones que tiene
Línea 415: Línea 263:
 
#Entender y explicar el contenido del array, es decir si es asociativo o indexado y los indices que tiene. Si una posición es un array a su vez procedemos a explicarlo igualmente
 
#Entender y explicar el contenido del array, es decir si es asociativo o indexado y los indices que tiene. Si una posición es un array a su vez procedemos a explicarlo igualmente
 
#Posteriormente lo recorreremos mostrando información de los cantantes y para cantante sus canciones
 
#Posteriormente lo recorreremos mostrando información de los cantantes y para cantante sus canciones
::Para hacer esta parte facilito un pequeño css y consistiría en aplicar el div cantante y el div canciones }}
+
::Para hacer esta parte facilito un pequeño css y consistiría en aplicar el div cantante y el div canciones  
* Puedes ver este ejercico en esta url de donde está adaptado http://www.tecn.upf.es/~ocelma/cpom/practicas/ es el ejercicio 12
+
  
 
;Ficheros
 
;Ficheros
  
[http://es.wikieducator.org/images/7/71/Artista.pdf  Artista.pdf] Este fichero es un css para el ejercicios
+
[http://es.wikieducator.org/images/7/71/Artista.pdf  Artista.pdf] Este fichero es un css para el ejercicios
 
[[/Usuario:ManuelRomero/php/dwes/B2T1/arrays/ejercicios|Contenido del ArrayAsociativo.php]]
 
[[/Usuario:ManuelRomero/php/dwes/B2T1/arrays/ejercicios|Contenido del ArrayAsociativo.php]]
====Planteando la solución====
+
{{Plegable|hide|datos.php|
 +
<source lang=php>
 +
<?php
  
===Contenido del array===
+
$artistas = array(
 +
    185711 => array(
 +
        "name" => 'Pearl Jam',
 +
        "decades" => '(1990,2000)',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=Pearl+Jam&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'NO WAY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/yield/03-no_way.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'HUMMUS',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/yield/14-hummus.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'LEASH',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/vs./11-leash.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'GIVEN TO FLY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/10-given_to_fly.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'NOTHING AS IT SEEMS',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/13-nothing_as_it_seems.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'SAVE YOU',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/16-save_you.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'EVEN FLOW',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/03-even_flow.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'ANIMAL',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/06-animal.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'REARVIEWMIRROR',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/09-rearviewmirror.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'SPIN THE BLACK CIRCLE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/p/pearl_jam/rearviewmirror_greatest_hits_199/10-spin_the_black_circle.mp3',
 +
            ),
 +
        )
 +
    ),
 +
    32841 => array(
 +
        "name" => 'Bo Diddley',
 +
        "decades" => '(1950,1960,1970,1980,1990,2000)',
 +
        "city" => 'McComb',
 +
        "country" => 'US',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=Bo+Diddley&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'WHO DO YOU LOVE?',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/guitar_legends/03-who_do_you_love%3F.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'ROAD RUNNER',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/guitar_legends/06-road_runner.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'YOU CAN\'T JUDGE A BOOK BY IT\'S COVER',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/guitar_legends/08-you_can_t_judge_a_book_by_it_s_c.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'OOH BABY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/guitar_legends/10-ooh_baby.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'DIDDLEY DADDY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/martin_scorsese_presents_the_blu/14-diddley_daddy.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'WHO DO YOU LOVE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/martin_scorsese_presents_the_blu/19-who_do_you_love.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'I\'M A MAN',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/b/bo_diddley/chess_blues_classics_1947_-_1956/12-i_m_a_man.mp3',
 +
            ),
 +
        ),
 +
    ),
 +
    84062 => array(
 +
        "name" => 'The Cult',
 +
        "decades" => '(1980,1990,2000)',
 +
        "city" => 'Bradford',
 +
        "country" => 'GB',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=The+Cult&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'THE WITCH (EDIT)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/05-the_witch_edit.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'REVOLUTION (EDIT)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/06-revolution_edit.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'LOVE REMOVAL MACHINE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/07-love_removal_machine.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'RAIN',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/08-rain.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'IN THE CLOUDS',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/09-in_the_clouds.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'COMING DOWN (EDIT)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/10-coming_down_edit.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'EDIE (CIAO BABY) [EDIT]',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/11-edie_ciao_baby_%5Bedit%5D.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'HEART OF SOUL (EDIT)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/12-heart_of_soul_edit.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'WILD FLOWER',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/13-wild_flower.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'STAR (EDIT)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/the_cult/pure_cult_-_the_singles_1984-199/14-star_edit.mp3',
 +
            ),
 +
        ),
 +
    ),
 +
    84430 => array(
 +
        "name" => 'Twisted Sister',
 +
        "decades" => '(1970,1980)',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=Twisted+Sister&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'LET THE GOOD TIMES ROLL/FEEL SO FINE (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/16-let_the_good_times_roll_feel_so_.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'THE KIDS ARE BACK',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/06-the_kids_are_back.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'I AM (I\'M ME)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/03-i_am_i_m_me.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'YOU CAN\'T STOP ROCK \'N ROLL',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/05-you_can_t_stop_rock_n_roll.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'I WANNA ROCK',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/02-i_wanna_rock.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'I\'LL NEVER GROW UP, NOW!',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/big_hits_and_nasty_cuts%3A_the_bes/09-i_ll_never_grow_up_now!.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'WE\'RE NOT GONNA TAKE IT',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/feel_the_noiz_-_the_best_of_meta/01-we_re_not_gonna_take_it.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'THE PRICE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/feel_the_love_-_the_best_of_powe/12-the_price.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'LIKE A KNIFE IN THE BACK',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/you_can_t_stop_rock_n_roll/02-like_a_knife_in_the_back.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'RIDE TO LIVE, LIVE TO RIDE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/t/twisted_sister/you_can_t_stop_rock_n_roll/03-ride_to_live_live_to_ride.mp3',
 +
            ),
 +
        ),
 +
    ),
 +
    84221 => array(
 +
        "name" => 'The New York Dolls',
 +
        "decades" => '(1970)',
 +
        "city" => 'New York',
 +
        "country" => 'US',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=The+New+York+Dolls&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'HOOCHIE COOCHIE MAN',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/16-hoochie_coochie_man.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'GREAT BIG KISS',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/17-great_big_kiss.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'VIETNAMESE BABY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/18-vietnamese_baby.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'BABYLON',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/19-babylon.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'RED PLANET LEATHER (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/01-red_planet_leather_live.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'ON FIRE (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/02-on_fire_live.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'SOMETHING ELSE (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/03-something_else_live.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'DADDY ROLLING STONE (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/04-daddy_rolling_stone_live.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'AIN\'T GOT NO HOME / DIZZY MISS LIZZIE (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/05-ain_t_got_no_home_dizzy_miss_liz.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'GIRLS, GIRLS GIRLS (LIVE)',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/n/new_york_dolls/great_big_kiss/06-girls_girls_girls_live.mp3',
 +
            ),
 +
        ),
 +
    ),
 +
    118504 => array(
 +
        "name" => 'Marc Bolan',
 +
        "decades" => '(1960,1970)',
 +
        "city" => 'London',
 +
        "country" => 'GB',
 +
        "link" => 'http://www.mp3.com/search.php?stype=artist&query=Marc+Bolan&action=Search',
 +
        "songs" => array(
 +
            array(
 +
                "title" => 'JASPER C. DEBUSSY',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/01-jasper_c._debussy.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'HIPPY GUMBO',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/02-hippy_gumbo.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'MISFIT',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/03-misfit.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'THE LILAC HAND OF MENTHOL DAN',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/04-the_lilac_hand_of_menthol_dan.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'BLACK AND WHITE INCIDENT',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/05-black_and_white_incident.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'JASMINE \'49',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/06-jasmine_49.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'CAT BLACK',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/07-cat_black.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'YOU GOT THE POWER',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/08-you_got_the_power.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'EASTERN SPELL',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/09-eastern_spell.mp3',
 +
            ),
 +
            array(
 +
                "title" => 'CHARLIE',
 +
                "link" => 'http://mtgdb.iua.upf.edu/total/audio/mp3/m/marc_bolan/the_beginning_of_doves/10-charlie.mp3',
 +
            ),
 +
        ),
 +
    ),
 +
);
 +
?>
 +
 
 +
 
 +
 
 +
</source>
 +
 
 +
}}
  
 
;Para ver el array una buena forma es cargarlo en un fichero php y hacer o bien un '''''var_dump''''' o bien un '''''print_r'''''
 
;Para ver el array una buena forma es cargarlo en un fichero php y hacer o bien un '''''var_dump''''' o bien un '''''print_r'''''
Línea 452: Línea 587:
 
*La posición '''''title''''' es un string con el título de la canción
 
*La posición '''''title''''' es un string con el título de la canción
 
*La posición '''''link''''' es un string con un url donde se puede oir la canción (Actualmente ya no están alojadas en esa posición)
 
*La posición '''''link''''' es un string con un url donde se puede oir la canción (Actualmente ya no están alojadas en esa posición)
 +
}}
 
<!--
 
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio1 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Arrays/Ejercicios/Ejercicio1 | Solución]]</font>
 
<hr />
 
<hr />
 
-->
 
-->

Revisión de 06:26 10 ene 2023





Icon activity.jpg

Array de colores

Creamos un array con 5 colores y posteriormente mostramos un título con cada uno de esos colores






Icon activity.jpg

Selecionar un elemento aleatorio de un array

En el caso anterior, seleccionamos un elemento aleatorio del array y mostramos de ese color el título







Acciones básicas sobre arrays

  • En esta sección son de accions básicas sobre arrays.

Ejercicio 1 : Recorrer un array básico



Icon activity.jpg

Ejercicio 1: Recorrer una array básico

  • Crea un array indexado con 5 valores de países y recórrelo con un for
  • Ahora crea un array con 5 países como índice y sus correspondiente capitales como valores
  • Después recorrelo con un foreach






Ejercicio 2 : Manipulando un array



Icon activity.jpg
Ejercicio 2: Manipulando un array
Asignando y elmininando valores
  • Creamos un array asingnándole 5 valores de forma indexada
  • Asigna valores entero, cadenas, y la quinta posición que sea otro array de tres elementos
  • Lo visualizamos con un var_dump
  • Agregamos valores en posiciones 15 y 30
  • Lo visualizamos con un var_dump
  • Eliminamos los índices vacíos de forma que quede compacto (sin usar funciones)
    • Es decir las desaparecen las posiciones 15 y 30
    • Sus valores se mantienen en las posicones 5 y 6




Ejercicio 3 : Crear un array de notas



Icon activity.jpg
Ejercicio 3 : Crear un array de notas

Crea un array con 10 notas aleatorias y posteriormente las visualizas obteniendo los valores estadísticos de la media, máxima y mínima

  • Hazlo de forma algorítmica, sin usar funciones de arrays




Ejercicio 4 : Usando funciones de arrays



Icon activity.jpg
Ejercicio 4 : Usando funciones de array

Repite el ejercicio anterior usando funciones para todas las acciones

  • Crea un array de notasde 15 alumnos Inicializadas con 0
  • Asiga a cada nota un valor aleatorio entre 5 y 10
  • Visualiza el array y verfica sus valores
  • Obtener la nota máxima, la mínima y la media del array
Ahora continuamos usando más funciones vistas en la teoría
  • Crea otro array de notas de 15 alumnos con notas entre 0 y 5
  • Junta los dos array en uno solo
  • Vuelve a realizar las acciones anteriores (max, min y media)
  • Recorre el array con un foreach
  • REaliza el recorrido con las funciones de recorrido especificadas anteriormente, mostrando en cada caso el ínice y valor (next, reset, current, key)
  • Busca el primer 10 en el array y devuelve su posición
  • Confirma si hay un 7 y un 4 como valores dentro del array
  • Ordena el array ascendentemente y muéstralo
  • Ordena el array descendentemente y muéstralo
  • Elimina valores repetidos y muéstralos




Ejercicio 5 : Imágenes aleatorias



Icon activity.jpg
Ejercicio 5 : Imágenes aleatorias
  • Crea un array con imagenes aleatorias y luego haz que se carguen cada 5 segundos de forma aleatoria.
  • Es muy importante que las 3 imágenes no se puedan repetir, que sean diferentes
Icon present.gif
Tip: Para recargar de forma periódica la página pasados unos segundos podemos usar el meta de html
<META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php">
Como array de imágenes podemos tomar estas
$array=[
"https://es.wikieducator.org/images/3/3d/Ajax_cliente_servidor.png",
 
"https://es.wikieducator.org/images/7/7b/Funcionamiento_ajax.png",
"https://es.wikieducator.org/images/a/aa/Angular_app_base.png",
"https://es.wikieducator.org/images/3/3d/Docker_distancia_1.png",
 
"https://es.wikieducator.org/images/4/4e/Opcion_Instalar.png",
"https://es.wikieducator.org/images/a/ab/AplicacionWeb.png",
"https://es.wikieducator.org/images/e/e4/Red3.png",
"https://es.wikieducator.org/images/f/f2/DACTW.png",
"https://es.wikieducator.org/images/e/e5/M3_web.png",
"https://es.wikieducator.org/images/a/a6/Ficheros.jpeg"];





Ejercicio 6 : Tienda de verduras



Icon activity.jpg
Ejercicio 6 : Tienda de verduras

Dada una tienda de verduras con los siguientes productos

$productos = [
    'lechuga' => ['unidades' => 200,
                   'precio' => 0.90],
    'tomates' =>['unidades' => 2000,
                 'precio' => 2.15],
    'cebollas' =>['unidades' => 3200,
                  'precio' => 0.49],
    'fresas' =>['unidades' => 4800,
                'precio' => 4.50],
    'manzanas' =>['unidades' => 2500,
                  'precio' => 2.10],
];
  • Realiza una aplicación con un formulario para poder comprar productos
  • Tras la compra se visualizará la factura del producto siempre que haya unidades
  • Se mostrará las unidades que quedan de cada producto




Ejercicio 7 : Accesos de usuario



Icon activity.jpg
Ejercicio 7 : Accesos de usuario
Creamos una aplicación dónde los usuarios se identifican (una caja de texto para identificarse)
Luego iremos contando cada vez que un usuario hace un click




Ejercicio 8 : Array multinivel



Icon activity.jpg
Ejercicio 8 : Array multinivel
Vamos a realizar un recorrido de un array asociativo de varios niveles.
Realizaremos un estudio del array y luego lo recorreremos
Dado un fichero que contiene un array asociativo
El array contiene información de cantantes y de cada cantante su nombre, su década y canciones que tiene
Se trata que trabajes en dos aspectos que se complementas
  1. Entender y explicar el contenido del array, es decir si es asociativo o indexado y los indices que tiene. Si una posición es un array a su vez procedemos a explicarlo igualmente
  2. Posteriormente lo recorreremos mostrando información de los cantantes y para cantante sus canciones
Para hacer esta parte facilito un pequeño css y consistiría en aplicar el div cantante y el div canciones
Ficheros

Artista.pdf Este fichero es un css para el ejercicios Contenido del ArrayAsociativo.php

Para ver el array una buena forma es cargarlo en un fichero php y hacer o bien un var_dump o bien un print_r
<?php
 
require_once ("datos.php");
 
var_dump( $artistas );
 
 
?>
  • A partir de él podemos mostrar la siguiente imagen que describe el aray

ArrayComplejo.png

  • Observamos que en primera instancia tengo un array asociativo de 6 índices cuyos valores son
185711, 32841, 84062, 84430, 84221, 118504
  • Cada posición tiene como valor un array asociativo de 4 posiciones cuyos índices tiene los valores
name decades link canciones
  • La posición name directamente tiene un valor string que es el nombre del artista
  • La posición decades tiene un valor string que es la década de ese cantante
  • La posición link tiene un valor string que es un url a una página con información sobre el artista
  • La posición canciones es un array indexado de tantas posicione como canciones tenga el artista
  • Cada posición del array indexado canciones es un array asociativo con dos índices
title link
  • La posición title es un string con el título de la canción
  • La posición link es un string con un url donde se puede oir la canción (Actualmente ya no están alojadas en esa posición)