Está en la página 1de 12

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Las tablas - Arrays


Las tablas o arrays, son muy importantes en PHP, ya que generalmente, las funciones que devuelven varios valores, como las funciones ligadas a las bases de datos, lo hacen en forma de tabla. Un array es una coleccin de valores con un nico nombre. Para acceder a los distintos valores de la variable se utiliza un ndice numrico o alfanumrico.

Creacin de arrays
Asignacin directa
Se asignan valores cuando se necesitan. La primera vez que asignemos un valor, el array se crear en el entorno: Ejemplo Array_Simple.php: <?php $mi_array[1] = 23; // Asignacin directa echo "La array contiene: $mi_array[1] <br>"; unset($mi_array);

?>

De esta forma tenemos un valor asignado al ndice 1 del array. Se puede asignar cualquier ndice en la creacin de este tipo de datos, e incluso no asignar ninguno, de forma que PHP se encarga de asociar un ndice distinto para cada valor. <?php $mi_array[] = 23; $mi_array[] = 54; echo "La array de echo "La array de ?> Otro ejemplo: <?php $ciudad[] = "Pars"; $ciudad[] = "Roma"; $ciudad[] = "Sevilla"; $ciudad[] = "Londres"; echo "Vivo en $ciudad[2]"; // Empieza en el ndice 0 // ndice 1 ndice 0 contiene: $mi_array[0] <br>"; ndice 1 contiene: $mi_array[1] <br>";

?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

array( )
Esta funcin crea un array con los valores que pase como datos de entrada. Los ndices sern aadidos automticamente empezando desde 0. Si no asignan parmetros a array(), la funcin le devolver un array vaco. Ejemplo Funcion_Array.php: <?php $mi_array = array(23,45,76,23,65); echo "La array contiene: $mi_array[2] <br>"; unset($mi_array);

?> El mtodo es similar a: <?php $mi_array[0] = 23; $mi_array[1] = 45; $mi_array[2] = 76; $mi_array[3] = 23; $mi_array[4] = 65; echo "La array contiene: $mi_array[3] <br>"; unset($mi_array);

?> Otro ejemplo: <?php $ciudad = array("Pars", "Roma", "Sevilla", "Londres"); //contamos el nmero de elementos de la tabla $num = count($ciudad); //imprimimos todos los elementos de la tabla echo "<ul type=square>"; for ($i=0; $i < $num; $i++){ echo "<li>El ndice $i es $ciudad[$i]"; } echo "</ul>";

?> La funcin array( ) permite tambin aadir ndices a los valores que se introducen. Para ello se utiliza el operador => de esta forma: <?php $mi_array = array(0 => 23, 1 => 45, 2 => 76); echo $mi_array [0] ."<br>". $mi_array[2]. "<br>"; //Definimos la primera posicin del array como 1 $ciudad = array(1=>"Pars", "Roma", "Sevilla", "Londres"); echo "Ahora la posicin 1 es: $ciudad[1] <br>"; ?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Tambin es posible aadir ndices que no sean correlativos o ndices alfanumricos, incluso mezclar los dos tipos. Para recuperar cualquier valor se utiliza el ndice dentro de los corchetes: <?php $mi_array = array("cero" => 23, "uno" => 45, 2 => 76); echo $mi_array ["uno"] ."<br>". $mi_array[2]. "<br>"; ?> Las tablas asociativas sern las que a cada elemento se le asigne un valor (key) para acceder a l. Ejemplo: supongamos que tenemos una tabla en la que cada elemento almacena el nmero de visitas a nuestra web por cada da de la semana. Utilizando el mtodo clsico de ndices, cada da de la semana se representara por un entero, 0 para lunes, 1 para martes, etc. $visitas[0] = 200; $visitas[1] = 186; Si usamos las tablas asociativas sera: $visitas["lunes"] = 200; $visitas["martes"] = 186; O bien, $visitas = array("lunes"=>200; "martes"=>186); echo $visitas["lunes"]. "<br>";

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Recorrido de todos los elementos de un array


La manipulacin de las tablas asociativas se hace a travs de funciones que actan sobre un puntero interno que indica la posicin. Por defecto, el puntero se sita en el primer elemento aadido en la tabla, hasta que es movido por una funcin: current(array) - devuelve el valor del elemento que indica el puntero pos(array) - realiza la misma funcin que current reset(array) - mueve el puntero al primer elemento de la tabla end(array) - mueve el puntero al ltimo elemento de la tabla next(array) - mueve el puntero al elemento siguiente prev(array) - mueve el puntero al elemento anterior

Ejemplo Funciones_Tablas.php: <?php $semana = array("lunes", "martes", "viernes", "sbado", "domingo"); echo current($semana). "<br>"; //lunes next($semana); echo pos($semana). "<br>"; //martes end($semana); echo pos($semana). "<br>"; //domingo prev($semana); echo current($semana); //sbado ?> "mircoles", "jueves",

each (array)
La funcin each() devuelve el valor del elemento actual, en este caso, el valor del elemento actual y su clave, y desplaza el puntero al siguiente, cuando llega al final devuelve FALSO. Recupera un array con dos elementos, el primero ser el ndice y el segundo el valor. La funcin list() es ms bien un constructor, lo que hace es asignar valores a una lista de variables. En este caso los valores son extrados de una tabla por la funcin each(). Ejemplo Funcion_Each.php: <?php $visitas = array("lunes"=>200, "martes"=>186, "mircoles"=>190, "jueves"=>175); while (list($clave, $valor) = each($visitas)){ echo "El $clave ha tenido $valor visitas <br>"; } ?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

foreach (array as ndice => valor)


Recorre todos los elementos de un array. Ejemplo Array_Foreach.php: <?php $ciudades = array ("Barcelona", "Lrida"); foreach ($ciudades as $valor) { echo ("El valor es $valor<br>"); } ?> "Gerona", "Tarragona",

La construccin anterior recorre el array desde el principio. En el ejemplo se puede ver que foreach() toma el array a recorrer y sus valores los va almacenando en la variable $valor a medida que el bucle se ejecuta. Existe una segunda construccin que permite recuperar el ndice y el valor. <?php $ciudades = array ("Barcelona", "Gerona", "Tarragona", "Lrida"); foreach ($ciudades as $indice => $valor) { echo ("El ndice $indice tiene el valor: $valor<br>") ; } ?> Es un mtodo muy bueno para imprimir los valores de un array que tiene ndices numricos y alfanumricos. <?php $ciudades = array ("Barcelona", "Gerona", "Tarragona", "Lrida"); $ciudades["Espaa"] = "Madrid"; $ciudades["Portugal"] = "Lisboa"; $ciudades["Francia"] = "Paris"; foreach ($ciudades as $indice => $valor) { echo ("El ndice $indice tiene el valor: $valor<br>") ; } ?>

print_r (array)
Muestra todos los elementos de un array, siguiendo la estructura del siguiente esquema: array ([indice1] => elemento1 [indice2] => elemento2 [indice3] => elemento3 [indiceN] => elementoN )

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Arrays multidimensionales
PHP soporta el uso de arrays de varias dimensiones. Cada ndice encerrado entre corchetes corresponde a una dimensin distinta. En realidad, cada dimensin es un array que se introduce como valor dentro de la dimensin anterior. As, podr crear un array multidimensional de la siguiente forma: Ejemplo Array_Multi.php: <?php $colores = array("fuertes","suaves"); $colores ["fuertes"] = array ("rojo" => "FF0000", "verde" => "00FF00", "azul" => "0000FF"); $colores ["suaves"] = array ( "rosa" => "FE9ABC", "amarillo" => "FDF189", "malva" => "9A2F68"); echo $colores["fuertes"] ["rojo"]; ?> Para recuperar los valores se utiliza un ndice del primer array (fuertes o suaves) y un ndice de alguno de los dos arrays secundarios. Otra forma de definir el array anterior es: <?php $colores = array( "fuertes" => array ( "rojo" => "FF0000", "verde" => "00FF00", "azul" => "0000FF"), "suaves" => array ( "rosa" => "FE9ABC", "amarillo" => "FDF189", "malva" => "9A2F68")); echo $colores["fuertes"] ["rojo"]; ?> Ejemplo Array_Multi2.php: <?php $calendario[] = array (1, "enero", 31); $calendario[] = array (2, "febrero", 28); $calendario[] = array (3, "marzo", 31); $calendario[] = array (4, "abril", 30); $calendario[] = array (5, "mayo", 31); while (list($clave, $valor ) = each($calendario)){ $cadena = $valor[1]; $cadena .= " es el mes nmero " . $valor[0]; $cadena .= " y tiene " . $valor[2] . " das<br>"; echo $cadena; }

echo "<br>"; foreach($calendario[0] as $indice => $valor){

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

echo "La posicin $indice del array contiene: $valor <br>"; } ?> Mostrar esto por pantalla: enero es el mes nmero 1 y tiene 31 das febrero es el mes nmero 2 y tiene 28 das marzo es el mes nmero 3 y tiene 31 das abril es el mes nmero 4 y tiene 30 das mayo es el mes nmero 5 y tiene 31 das La posicin 0 del array contiene: 1 La posicin 1 del array contiene: enero La posicin 2 del array contiene: 31

Funciones de manipulacin de arrays


Existen numerosas funciones que son capaces de averiguar datos de los arrays, tales como el tamao, si un valor forma parte del conjunto o si un determinado ndice est registrado.

Contabilizacin de elementos
count(array)
Cuenta el nmero de elementos que contiene un array. <?php echo "elementos de 1 dimensin " . count ($colores) . "<br>"; // Me devolver que tiene 2 elementos echo "elementos de 2 dimensiones " . count ($colores["fuertes"]); // Me devolver que tiene 3 elementos ?> El ejemplo anterior se basa en la definicin del array de colores inicializado antes. Para contar el nmero de elementos debe ponerse tambin la dimensin. Si el array es de una sola dimensin no hace falta. La funcin sizeof() acta de la misma forma. <?php echo "elementos de 1 dimensin " . sizeof($colores). "<br>"; echo "elementos de 2 dimensiones " sizeof($colores["fuertes"]); ?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Bsqueda de datos
in_array(elemento, array)
Busca dentro de un array un valor pasado como parmetro, si lo encuentra devuelve el valor true, si no, devuelve false. Toma dos argumentos, el valor a buscar y el array dnde buscar. Ejemplo Funcion_InArray.php: <?php $colores = array ("rojo","verde","amarillo","azul"); if (in_array("rojo", $colores)) { echo "Se ha encontrado el valor rojo"; }else{ echo "No se ha encontrado"; } ?>

array_keys(array, elemento)
Devuelve un array con los ndices del array dado como primer argumento. Opcionalmente, se pueden pedir nicamente aquellos correspondientes a un elemento dado. Ejemplo Funcion_ArrayKeys1.php: El siguiente programa lista los nombres de los actores que aparecen como claves en un array asociativo: <?php $actores=array("Gary Cooper" => array("Solo ante el peligro", "La gran prueba", "El secreto de vivir"), "Cary Grant" => array("La fiera de mi nia", "Arsnico por compasin", "Historias de Filadelfia"), "Marlon Brando" => array("La ley del silencio", "Sayonara", "Viva Zapata!")); $busqueda=array_keys($actores); foreach($busqueda as $indice => $valor){ echo "$valor <br>"; } ?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Mostrar esto por pantalla: Gary Cooper Cary Grant Marlon Brando Ejemplo Funcion_ArrayKeys2.php: El siguiente programa localiza los ndices asociados a un determinado valor. En concreto, se listan las pelculas almacenadas correspondientes al ao 1940: <?php $peliculas=array("El apartamento"=>1960, "Charada"=>1963, "Doctor Zhivago"=>1965, "El gran dictador"=>1940, "Historias de Filadelfia"=>1940, "El hombre tranquilo"=>1952, "Rebeca"=>1940); $busqueda=array_keys($peliculas, 1940); foreach($busqueda as $indice => $valor){ echo "$valor <br>"; } ?> Mostrar esto por pantalla: El gran dictador Historias de Filadelfia Rebeca

Generacin de arrays
range(inicio, final, aumento)
Se genera un array numrico o de caracteres, comenzando en el valor inicial hasta llegar al valor final dado. Como argumento opcional, se incluye el criterio de paso de un elemento a otro, cuyo valor por defecto es 1. Ejemplo Funcion_Range.php: <?php $mi_array = range(120, 130); foreach ($mi_array as $indice => $valor) { echo ("El ndice $indice tiene el valor: $valor<br>") ; } $caracteres = range("b", "k"); print_r($caracteres); ?>

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Mostrar esto por pantalla: El El El El El El El El El El El ndice ndice ndice ndice ndice ndice ndice ndice ndice ndice ndice 0 tiene el valor: 120 1 tiene el valor: 121 2 tiene el valor: 122 3 tiene el valor: 123 4 tiene el valor: 124 5 tiene el valor: 125 6 tiene el valor: 126 7 tiene el valor: 127 8 tiene el valor: 128 9 tiene el valor: 129 10 tiene el valor: 130

Array ( [0] => b [1] => c [2] => d [3] => e [4] => f [5] => g [6] => h [7] => i [8] => j [9] => k )

Combinacin de arrays
array_push(array, elemento1,elemento2,)
Aade al array dado los elementos que se indican como argumentos. La funcin devuelve la nueva dimensin del array. Ejemplo Combinacin_arrays.php: $a=array(10, 15, 20, 25); $b=array(30, 35, 40, 55); array_push($a, $b[0], $b[2]); foreach($a as $valor){ echo "$valor, "; } Mostrar esto por pantalla: 10, 15, 20, 25, 30, 40,

10

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

array_merge(array1, array2, array3 ,)


Devuelve un nuevo array formado uniendo todos los elementos de los arrays pasados como argumentos. Si dos o ms elementos tienen el mismo ndice alfabtico en varios de los arrays iniciales, se incluye en la unin el ltimo de ellos. Ejemplo Combinacin_arrays.php: $visitas_a = array("lunes"=>200, "mircoles"=>190, "jueves"=>175); $visitas_b = array("viernes"=>195, "domingo"=>300, "lunes"=>50); "martes"=>186, "sbado"=>250,

$visitas_semana=array_merge($visitas_a, $visitas_b); foreach($visitas_semana as $indice => $valor){ echo "$indice: $valor <br>"; } Mostrar esto por pantalla: lunes: 50 martes: 186 mircoles: 190 jueves: 175 viernes: 195 sbado: 250 domingo: 300

Ordenacin de los elementos de un array


asort(array) y arsort(array)
Estas funciones permiten ordenar los elementos de una lista dada, bien en orden ascendente (asort) o descendente (arsort). Su particularidad es que cada elemento conserva su ndice original.

sort(array) y rsort(array)
Estas funciones reordenan los elementos de una matriz, bien en orden ascendente (sort) o descendente (rsort). Los ndices se reasignan segn la nueva disposicin.

array_reverse(array)
Devuelve un nuevo array con los elementos del array original, pero en orden inverso.

11

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Borrar arrays
unset(array)
Borra un elemento del array o el array entera. Ejemplo Funcion_Unset.php: <?php $colores = array ("rojo","verde","amarillo","azul","rosa"); echo "El nmero de elementos es: " . count ($colores) . "<br>"; unset ($colores[2]); echo "El nmero de elementos es: " . count ($colores) . "<br>"; ?> Se puede observar que para borrar un elemento, hay que conocer el ndice. El resultado del ejemplo por pantalla es: El nmero de elementos es: 5 El nmero de elementos es: 4

Intercambio de valores en arrays


array_flip(array)
Intercambia los valores de ndices y datos, es decir, los ndices sern guardados como datos y los valores sern sus nuevos ndices. Ejemplo Funcion_Array_Flip.php: <?php echo "<h1>Otro ejemplo</h1>"; $numero = array("uno" => 1,"dos" => 2, "tres" => 3,"cuatro" => 4); echo "<h2>Nmeros intercambiados</h2>"; $nueva=array_flip($numero); foreach ($nueva as $indice => $valor){ echo "$indice: $valor <br>"; } ?> El navegador muestra: Nmeros intercambiados 1: uno 2: dos 3: tres 4: cuatro

12

También podría gustarte