Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Arrays/Conceptos»
De WikiEducator
(→Crear un array) |
|||
(22 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | + | ||
− | + | __NOEDITSECTION__ | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
{{:Usuario:ManuelRomero/ProgramacionWeb/Arrays/nav}} | {{:Usuario:ManuelRomero/ProgramacionWeb/Arrays/nav}} | ||
Línea 13: | Línea 8: | ||
<div class="slide"> | <div class="slide"> | ||
<div class="parrafo"> | <div class="parrafo"> | ||
+ | <div class="slide"> | ||
===Arrays=== | ===Arrays=== | ||
*Un tipo de datos compuesto es aquel que está formado por varios valores que se pueden tratar de manera independiente, pero a la vez se maneja de forma única. | *Un tipo de datos compuesto es aquel que está formado por varios valores que se pueden tratar de manera independiente, pero a la vez se maneja de forma única. | ||
− | *En PHP puedes utilizar dos tipos de datos compuestos: '''''el array''''' y '''''el objeto'''''. | + | *En PHP puedes utilizar principalmente dos tipos de datos compuestos: '''''el array''''' y '''''el objeto'''''. |
*Los objetos los veremos más adelante. Además de los '''''objetos''''', y muy relacionados están los '''''recursos''''', que también veremos más adelante. | *Los objetos los veremos más adelante. Además de los '''''objetos''''', y muy relacionados están los '''''recursos''''', que también veremos más adelante. | ||
</div> | </div> | ||
Línea 22: | Línea 18: | ||
<div class="slide"> | <div class="slide"> | ||
{{MRM_Definicion|Un array es un tipo de datos compuesto que nos permite almacenar varios valores en una única variable. }} | {{MRM_Definicion|Un array es un tipo de datos compuesto que nos permite almacenar varios valores en una única variable. }} | ||
− | *Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un '''valor clave o índice''' | + | *Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un '''valor clave o índice''', en la imagen representado por '''POSICIÓN''' |
[[Archivo:arrayPHP.png]] | [[Archivo:arrayPHP.png]] | ||
Línea 78: | Línea 74: | ||
$modulos[] = "otro módulo"; | $modulos[] = "otro módulo"; | ||
− | //Ahora añado un módulo en el índice con valor 10 que NO ES LA POSICIÓN 10 | + | //Ahora añado un módulo en el índice con valor 10 |
+ | // que NO ES LA POSICIÓN 10 | ||
$modulos[10] = "Módulo indexado con el índice 10"; | $modulos[10] = "Módulo indexado con el índice 10"; | ||
− | //incorporamos un nuevo elmento en el array sin especificar el valor del índice | + | //incorporamos un nuevo elmento en el array |
− | //PHP asignará un valor siguiente el último valor numérico que fue el 10 (indice último numérico agragado) | + | //sin especificar el valor del índice |
+ | |||
+ | // PHP asignará un valor siguiente el último valor numérico | ||
+ | // que fue el 10 (indice último numérico agragado) | ||
$modulos[] = "Último módulo añadido"; | $modulos[] = "Último módulo añadido"; | ||
− | // | + | //Visualizo con var_dump el contenido |
+ | // y estructura de la variable $modulo | ||
var_dump($modulos); | var_dump($modulos); | ||
</source> | </source> | ||
− | *La salida que genera ver el contenido de la variable $modulos es un array de 6 elementos | + | *La salida que genera ver el contenido de la variable '''''$modulos''''' es un array de 6 elementos. |
− | * | + | *Vemos el valor de los índices y los contenidos de cada elemento: |
<source lang=php> | <source lang=php> | ||
Línea 103: | Línea 104: | ||
</source> | </source> | ||
}} | }} | ||
− | + | ||
<!--2--> | <!--2--> | ||
Línea 109: | Línea 110: | ||
===Array numéricos o indexados=== | ===Array numéricos o indexados=== | ||
− | * | + | *Como ya hemos visto. los arrays en php se clasifican en función de la clave que llevan: |
− | #Clave numérica posicional : La clave especifica la posición de cada elemento. | + | #'''Clave numérica posicional''' : La clave especifica la posición de cada elemento. '''''Array Indexado''''' |
− | #Clave con valor: La clave tiene un significado por sí mismo y tiene '''asociado''' un valor. | + | #'''Clave con valor''': La clave tiene un significado por sí mismo y tiene '''asociado''' un valor. '''''Array Asociativo''''' |
− | + | En los Arrays indexados, el índice empieza 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 | *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 | ||
Línea 134: | Línea 134: | ||
====Crear un array==== | ====Crear un array==== | ||
*Podemos usar el operador '''''array();''''' | *Podemos usar el operador '''''array();''''' | ||
− | *A partir de la versión 5.3 se puede | + | *A partir de la versión 5.3 se puede (y recomienda) usar directamente el operador '''''[]''''' |
*En php no hay que especificar tamaño , ni cómo va a ser el índice ni lógicamente tipo (ni de índice ni de contenido). | *En php no hay que especificar tamaño , ni cómo va a ser el índice ni lógicamente tipo (ni de índice ni de contenido). | ||
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). | 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). | ||
Línea 162: | Línea 162: | ||
====Escribir en un array==== | ====Escribir en un array==== | ||
*Simplemente hay que asignar un valor a una posición del '''''array''''' | *Simplemente hay que asignar un valor a una posición del '''''array''''' | ||
− | *Si no especificamos valor al índice, PHP asignará un valor numérico superior al valor numérico más alto asignado | + | *Si no especificamos valor al índice, PHP asignará un valor numérico superior al valor numérico más alto asignado. |
− | *Si pongo un valor superior al número de índices, el siguiente elemento estará en una posición | + | *Si pongo un valor superior al número de índices, el siguiente elemento estará en una posición más: |
<source lang=php> | <source lang=php> | ||
$notas =[]; | $notas =[]; | ||
Línea 179: | Línea 179: | ||
*Podemos ver gráficamente como queda el '''array'''. | *Podemos ver gráficamente como queda el '''array'''. | ||
[[Archivo:arrayNotas.png]] | [[Archivo:arrayNotas.png]] | ||
− | *Las posiciones no especificadas no existen. | + | *Las posiciones no especificadas '''no existen'''. |
<!--2--> | <!--2--> | ||
Línea 188: | Línea 188: | ||
<source lang=php> | <source lang=php> | ||
$notas[2]= 8; | $notas[2]= 8; | ||
− | + | </source> | |
</div> | </div> | ||
;Escribir en un array | ;Escribir en un array | ||
Línea 215: | Línea 215: | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
</div> | </div> | ||
Línea 254: | Línea 251: | ||
echo "El valor de la variable $notas es -$nota- | echo "El valor de la variable $notas es -$nota- | ||
</source> | </source> | ||
− | *El código anterior saldría | + | *El código anterior saldría: |
<source lang=php> | <source lang=php> | ||
la nota primera es 6 | la nota primera es 6 | ||
Línea 260: | Línea 257: | ||
El valor de la variable $notas es -Array- | El valor de la variable $notas es -Array- | ||
</source> | </source> | ||
− | Vemos | + | Vemos cómo al escribir el nombre del array no veríamos su contenido si no el tipo del valor. |
− | + | ||
<!--2--> | <!--2--> | ||
Línea 274: | Línea 271: | ||
//Inicializo un array de tamaño entre 20 y 30 elementos | //Inicializo un array de tamaño entre 20 y 30 elementos | ||
− | $ | + | $size = rand(10,15); |
− | for ($n = 0; $n<$ | + | for ($n = 0; $n<$size ; $n++){ |
$notas[]=rand(0,10); | $notas[]=rand(0,10); | ||
} | } | ||
Línea 346: | Línea 343: | ||
<div class="slide"> | <div class="slide"> | ||
;Recorrer un array | ;Recorrer un array | ||
− | {{MRM_Pregunta|¿Por qué no conviene usar la función '''''count'''''}} | + | {{MRM_Pregunta|¿Por qué no conviene usar la función un for obteniendo el tamaño del array con '''''count''''' o bien con '''''sizeof'''''}} |
− | *Esta no es una forma conveniente de recorrer un array en php, pues no tiene | + | <br /> |
+ | *Esta no es una forma conveniente de recorrer un array en php, pues no tiene por qué coincidir en el índice de cada elemento con su posición numérica. | ||
*Supongamos el siguiente caso | *Supongamos el siguiente caso | ||
<source lang=php> | <source lang=php> | ||
Línea 366: | Línea 364: | ||
</source> | </source> | ||
*La forma de leerla sería | *La forma de leerla sería | ||
− | + | Para cada elemento de $array, cuyo valor guardo en $valor | |
− | + | Esto lo hago hasta que llegue al último elemento | |
*O bien: | *O bien: | ||
<source lang=php> | <source lang=php> | ||
− | foreach ($array as $ | + | foreach ($array as $indice => $valor){ |
.... | .... | ||
} | } | ||
</source> | </source> | ||
*Cuya lectura sería | *Cuya lectura sería | ||
− | + | Para cada elemento de $array, | |
− | + | toma el valor del índice y lo guardas en la variable $indice | |
+ | y el valor del contenido lo guardas en la variable $valor | ||
+ | Esto se repite hasta que llegue al último elemento | ||
+ | *''''Es decir para cada elemento del array'''' (cada uno de ellos. por lo tanto es una iteración). | ||
<!--2--> | <!--2--> | ||
Línea 390: | Línea 391: | ||
//Accediendo solo a los contendios | //Accediendo solo a los contendios | ||
echo "<h2>Vamos a ver las capitales del array </h2>"; | echo "<h2>Vamos a ver las capitales del array </h2>"; | ||
− | //$capital es el nombre de una variable | + | //$capital es el nombre de una variable |
+ | //Lógicamente este identificador es libre de usar, | ||
+ | // (podemos elegir el nombre que queramos) | ||
foreach ($capitales as $capital){ | foreach ($capitales as $capital){ | ||
echo "La capital de la posición <b>$n</b> es <b>$capital</b><br />"; | echo "La capital de la posición <b>$n</b> es <b>$capital</b><br />"; | ||
Línea 398: | Línea 401: | ||
//Si quiero ver también los índices | //Si quiero ver también los índices | ||
echo "<h2>Vamos a ver los paises con sus capitales del array </h2>"; | echo "<h2>Vamos a ver los paises con sus capitales del array </h2>"; | ||
− | //Tanto $pais como $capital son nombres de variables que | + | //Tanto $pais como $capital |
+ | //son nombres de variables que establecemos | ||
+ | //(podemos elegir los nombres que queramos). | ||
$n=0; | $n=0; | ||
foreach ($capitales as $pais =>$capital){ | 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 />"; | + | echo "La capital de la posición <b>$n</b> del país <b>$pais </b> |
+ | es <b>$capital</b><br />"; | ||
$n++; | $n++; | ||
} | } | ||
Línea 407: | Línea 413: | ||
?> | ?> | ||
</source> | </source> | ||
− | *La salida generada será | + | *La salida generada será: |
<source lang=php> | <source lang=php> | ||
Vamos a ver las capitales del array | Vamos a ver las capitales del array | ||
Línea 465: | Línea 471: | ||
} | } | ||
</source> | </source> | ||
− | *Esto es | + | *Esto es porque en realidad en cada interación se está cogiendo el valor del elemento del array '''''$productos''''' y se copia en la variable '''''$producto''''' el índice y '''''$datos''''' el valor, pero '''''$datos''''' es otra posición de memoria diferente que el contenido correspondiente del array, por lo que al modificarlo, el array se queda inalterado. |
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 | 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 | ||
<source lang=php> | <source lang=php> | ||
Línea 544: | Línea 550: | ||
$pais = key($capitales); //Obtener el indice actual | $pais = key($capitales); //Obtener el indice actual | ||
$capital = current($capitales); //Obtener el valor del elemento actual del array | $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 />"; | + | echo "La capital de la posición <b>$n</b> del país <b> $pais </b > es |
+ | <b > $capital</b ><br />"; | ||
$n++; | $n++; | ||
− | }while (next($capitales)); //Next avanza al siguiente elemento del array, cuando llegue al último dará false | + | }while (next($capitales)); |
+ | //Next avanza al siguiente elemento del array, | ||
+ | // cuando llegue al último dará false | ||
Línea 569: | Línea 578: | ||
$miArray = [ "Burgos", "Zaragoza", "Huesca", "Teruel", "Soria" ]; | $miArray = [ "Burgos", "Zaragoza", "Huesca", "Teruel", "Soria" ]; | ||
echo "<h3>Mostrando información con var_dump de un array</h3>"; | 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 | + | 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>"; | 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 | + | 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 = "El valor de la variable es "; | ||
$valor .= print_r( $miArray, true ); | $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 "<h3>Ahora muestro el valor de una variable |
+ | a la que le he asignado lo que devuleve print_r</h3>"; | ||
echo $valor; | echo $valor; | ||
</source> | </source> | ||
Línea 581: | Línea 595: | ||
===Recorrer un string como un array de caracteres=== | ===Recorrer un string como un array de caracteres=== | ||
*Podemos recorrer un array como un vector de caracteres | *Podemos recorrer un array como un vector de caracteres | ||
− | *Esto nos puede permitir controlar y gestionar los string analizando cada carácter | + | *Esto nos puede permitir controlar y gestionar los string analizando cada carácter. |
− | {{MRM_Actividad | + | |
+ | {{MRM_Actividad|Title=Recorrer un string| | ||
;Muestra los caracteres de un string carácter a carácter | ;Muestra los caracteres de un string carácter a carácter | ||
<source lang=php> | <source lang=php> | ||
Línea 588: | Línea 603: | ||
for ($n=0; $n<strlen($nombre); $n++){ | for ($n=0; $n<strlen($nombre); $n++){ | ||
echo "Cáracter en posicion <strong>$n</strong> es <strong>".$nombre[$n]."</strong><br />"; | echo "Cáracter en posicion <strong>$n</strong> es <strong>".$nombre[$n]."</strong><br />"; | ||
− | } | + | }} |
</source> | </source> | ||
*La salida: | *La salida: | ||
[[Archivo:string_array.png]] | [[Archivo:string_array.png]] | ||
− | |||
===Funciones para manejar matrices=== | ===Funciones para manejar matrices=== | ||
+ | <br /> | ||
+ | {{MRM_Web|Funciones de array| | ||
+ | http://https://www.php.net/manual/es/ref.array.php | ||
+ | }} | ||
+ | ;Alguna de ellas | ||
*Tamaño: count(), sizeof() | *Tamaño: count(), sizeof() | ||
+ | *Crear un array de un determinado tamaño y valor '''''array_fill()''''' | ||
+ | *Pasar una función a cada elemento de un array_map() | ||
+ | *Obtener valores máximos, mínimos, sumar : max(), min(), array_sum | ||
*Operador +: concatena dos matrices | *Operador +: concatena dos matrices | ||
*Recorrer una matriz next(), prev(), reset(), current(),key(), reset() | *Recorrer una matriz next(), prev(), reset(), current(),key(), reset() | ||
− | *busqueda | + | *busqueda array_search(), in_array() y con expresiones regulares preg_grep(), |
*Ordenar sort() | *Ordenar sort() | ||
− | * | + | *Elinina duplicados array_reduce() |
+ | *Dividir/crear una cadena en un array especificando un carácter de separacion explode(), implode() | ||
</div> | </div> | ||
+ | ;funciones que utilizan callback para trabajar con arrays | ||
+ | *Son funciones que reciben como al menos uno de sus parámetros una función de callback | ||
+ | *La implmentación de la función la realiza el programador | ||
+ | *Las funciones se aplican a los elemento/s del array, a cada uno de ellos, que los recibe como argumento. | ||
+ | *Ejemplos de alguna de esas funciones: | ||
+ | array_reduce | ||
+ | array_map | ||
+ | array_filter | ||
+ | array_walk | ||
+ | |||
+ | |||
+ | |||
+ | {{MRM_Actividad|Title=Probando funciones| | ||
+ | *Crea un array de notas de 15 alumnos | ||
+ | *Inicializalas con 0 | ||
+ | *Asiga a cada nota un valor aleatorio entre 5 y 10 | ||
+ | *Visualiza el array con un var_dump y verfica sus valores | ||
+ | *Obtener la nota máxima, la mínima y la media del array | ||
+ | *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 | ||
+ | *Recorre el array con un foreach | ||
+ | *REaliza el recorriod con las funciones de recorrido especificadas anteriormente, mostrando en cada caso el ínice y valor | ||
+ | *Busca el primer 10 en el array y devuelve su posición | ||
+ | *Confirma si hay un 11 y un 4 como valores dentro del arrayu | ||
+ | *Ordena el array ascendentemente y muéstralo | ||
+ | *Ordena el array descendentemente y muéstralo | ||
+ | *Elinina valores repetidos y muéstralos | ||
+ | |||
+ | }} | ||
+ | |||
<!--2--> | <!--2--> |
Última revisión de 06:19 30 nov 2023