Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Arrays/Conceptos»
De WikiEducator
(8 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | |||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
{{:Usuario:ManuelRomero/ProgramacionWeb/Arrays/nav}} | {{:Usuario:ManuelRomero/ProgramacionWeb/Arrays/nav}} | ||
+ | |||
{{#widget:Slides}} | {{#widget:Slides}} | ||
<!--{{:Usuario:ManuelRomero/php/arrays/nav}}--> | <!--{{:Usuario:ManuelRomero/php/arrays/nav}}--> | ||
Línea 9: | Línea 11: | ||
===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 16: | 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 72: | 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 97: | Línea 104: | ||
</source> | </source> | ||
}} | }} | ||
− | + | ||
<!--2--> | <!--2--> | ||
Línea 104: | Línea 111: | ||
===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: | *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. '''''Array Indexado''''' | + | #'''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. '''''Array Asociativo''''' | + | #'''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. | 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 127: | 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 155: | 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 172: | 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 181: | 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 244: | 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 250: | 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 264: | 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 336: | 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 356: | 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> | ||
Línea 365: | Línea 373: | ||
</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 380: | 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 388: | 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 397: | 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 455: | 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 534: | 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 559: | 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 571: | 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> |
Última revisión de 06:19 30 nov 2023