|
Dado que es este un manual orientado principalmente a la utilización del lenguaje PHP y el gestor de base de datos MySQL, es imprescindible conocer y manejar con soltura uno de los elementos más importantes de este lenguaje: el array. Un array es una variable que está compuesta de varios elementos, cada uno de ellos catalogado dentro de ella misma por medio de una clave.
Tablas por índices En PHP podemos dividir las tablas en dos tipos bien diferenciados. El primer tipo define la tabla mediante índices que almacenan cada valor. Así, una forma simple de rellenar una tabla sería la siguiente: <?php $ciudad[1] = "París"; $ciudad[2] = "Roma"; $ciudad[3] = "Sevilla"; $ciudad[4] = "Londres"; $ciudad[5] = "Madrid"; print ("yo vivo en " . $ciudad[5] . "<BR>\n"); ?> O, de una forma más ajustada a las funciones del lenguaje que nos ocupa, podemos definir la tabla mediante la función array(), que nos ayudará en la creación de tablas más complejas: <?php $ciudad = array("París", "Roma", "Sevilla", "Londres", "Madrid"); //contamos el número de elementos de la tabla $numelentos = count($ciudad); //imprimimos todos los elementos de la tabla for ($i=0; $i < $numelentos; $i++) { print ("La ciudad $i es $ciudad[$i] <BR>\n"); } ?> De no especificarse, el primer valor de índice será [0], por lo que, si es necesario, usaremos el operador => para especificar el índice inicial que podamos requerir: $ciudad = array(1=>"París", "Roma", "Sevilla", "Londres", "Madrid"); Tablas por asociación En este tipo de tablas, la definición se hace mediante valores asignados a cada uno de los elementos de la tabla. Esto es, en vez de utilizar valores numéricos para clasificar los elementos de la tabla, utilizaremos cadenas entrecomilladas a modo de índices asociativos: <? $moneda["espana"]="Peseta"; $moneda["francia"]="Franco"; $moneda["usa"]="Dolar"; ?> O bien: <? $moneda=array("espana"=> "Peseta","francia" => "Franco","usa" => "Dolar"); ?> En el ejemplo de las tablas por índices, éstas se recorrían haciendo uso de for y un sencillo contador, pero ¿Cómo recorreremos una tabla asociativa? La única forma que tenemos de hacerlo es mediante el uso de una función que actúe sobre un puntero interno, indicativo de la posición. Por defecto, el puntero se situará en el primer elemento de la tabla y esperará a ser movido por una función. Las funciones a nuestra disposición para manipular tablas asociativas son las siguientes: current - devuelve el valor del elemento que indica el puntero. pos - realiza la misma función que current. reset - mueve el puntero al primer elemento de la tabla. end - mueve el puntero al último elemento de la tabla. next - mueve el puntero al elemento siquiente. prev - mueve el puntero al elemento anterior. count - devuelve el número de elementos de una tabla. Veamos a continuación un ejemplo del uso de estas funciones: <?php $semana = array("lunes", "martes", "miércoles", "jueves", "viernes", "sábado", "domingo"); echo count($semana); //devuelve 7 //situamos el puntero en el primer elemento reset($semana); echo current($semana); //devuelve lunes next($semana); echo pos($semana); //devuelve martes end($semana) echo pos($semana); //devuelve domingo prev($semana); echo current($semana); //devuelve sábado ?> Otra forma de recorrer la tabla asociativa podría ser mediante un bucle y la función each(): <?php $visitas = array("lunes"=>205, "martes"=>136, "miércoles"=>590, "jueves"=>750); reset($visitas); while (list($clave, $valor) = each($visitas)) { echo "el día $clave ha tenido $valor visitas<BR>"; } ?> En el ejemplo, la función each() devuelve el valor del elemento actual y su clave correspondiente. Cuando el puntero llegue al final de la tabla, obtendremos un valor FALSE que terminará el bucle while(). Tablas multidimensionales Una forma bastante práctica de almacenar datos es mediante la creación de tablas multidimensionales. En estas tablas, cada elemento apunta hacia otra tabla. Por ejemplo: supongamos la necesidad de querer almacenar en una misma tabla el nombre, la moneda y el idioma de un país. Crearemos para entonces una tabla ($pais) con las claves nombre, moneda e idioma: <? $pais=array ( "espana" =>array ( "nombre"=>"España", "lengua"=>"Castellano", "moneda"=>"Peseta" ), "francia" =>array ( "nombre"=>"Francia", "lengua"=>"Francés", "moneda"=>"Franco" ) ); echo $pais["espana"]["moneda"] //Saca en pantalla: "Peseta" ?> Funciones para manipular tablas A modo de referencia, se detallan a continuación las funciones disponibles para el trabajo y manipulación de tablas, sabiendo que todas ellas forman parte del núcleo de PHP, por lo cual no se necesita instalación adicional. Se apunta el propósito de cada una de ellas y algún ejemplo en aquellas que se consideran relevantes, pues no es objeto de este manual detallar cada una de las funciones de PHP. array_change_key_case -- Devuelve una tabla con todas las claves de las cadenas convertidas a mayúsculas o minúsculas. array_chunk -- Divide una tabla en segmentos. array_combine -- Crea una nueva tabla, usando una tabla para las claves y otra para sus valores. array_count_values -- Cuenta todos los valores de una tabla. array_diff_assoc -- Comprueba las diferencias entre tablas teniendo en cuenta los índices. array_diff_key -- Calcula la diferencia de tablas usando las llaves para la comparación. array_diff_uassoc -- Computa la diferencia entre tablas con un chequeo adicional de índices, el cual es realizado por una llamada de retorno entregada por el usuario. array_diff_ukey -- Calcula la diferencia de tablas usando callback sobre las claves a comparar. array_diff -- Comprueba las diferencias entre tablas. array_fill -- Llena una tabla con valores. array_filter -- Filtra elementos de una tabla mediante una función callback. array_flip -- Intercambia los valores de una tabla con sus índices. array_intersect_assoc -- Calcula la intersección de tablas verificando que también coincidan los índices. array_intersect_key -- Calcula la intersección de tablas usando las llaves para la comparación. array_intersect_uassoc -- Calcula la intersección de tablas con chequeo de índices adicional por una función de usuario. array_intersect_ukey -- Calcula la intersecció de tablas usando una función de usuario para la comparación de los índices. array_intersect -- Calcula la intersección de tablas. array_key_exists -- Comprueba si el índice o clave dada existe en la tabla. array_keys -- Devuelve todas las claves de una tabla. array_map -- Aplica la llamada de retorno especificada a los elementos de las matrices dadas. array_merge_recursive -- Une dos o más tablas recursivamente. array_merge -- Combina dos o más tablas. array_multisort -- Ordena múltiples tablas, o matrices multi-dimensionales. array_pad -- Rellena una tabla con un valor hasta el tamaño especificado. array_pop -- Extrae el último elemento de la tabla. array_product -- Calcula el producto de valores en una tabla. array_push -- Inserta uno o más elementos al final de la tabla. array_rand -- Selecciona una o más entradas aleatorias de una tabla. array_reduce -- Reduce iterativamente una tabla a un solo valor usando una función llamada de retorno. array_reverse -- Devuelve una tabla con los elementos en orden inverso. array_search -- Busca un valor determinado en una tabla y devuelve la clave correspondiente en caso de éxito. array_shift -- Extrae un elemento del comienzo de la tabla. array_slice -- Extrae una porción de la tabla. array_splice -- Suprime una porción de la tabla y la sustituye por otra cosa. array_sum -- Calcula la suma de los valores en una tabla. array_udiff_assoc -- Computa la diferencia entre tablas con un chequeo de índices adicional, comparando los datos con una llamada de retorno. array_udiff_uassoc -- Computa la diferencia entre tablas con un chequeo de índices adicional, comparando los datos y los índices con una llamada de retorno. array_udiff -- Computa la diferencia entre tablas, usando una llamada de retorno para la comparación de datos. array_uintersect_assoc -- Calcula la intersección de tablas con chequeo adicional de ídices, comparando los datos por una función del usuario. array_uintersect_uassoc -- Calcula la intersección de tablas con chequeo adicional de índices, compara los datos y los índices por una función del usuario. array_uintersect -- Calcula la interseccón de tablas, compara los datos con una función del usuario. array_unique -- Remueve valores duplicados de una tabla. array_unshift -- Introduce uno o más elementos al principio de la tabla. array_values -- Devuelve todos los valores de una tabla: <?php $tabla = array("talla" => "XL", "color" => "dorado"); print_r(array_values($tabla)); ?> El resultado del ejemplo seria: Array ( [0] => XL [1] => dorado ) array_walk_recursive -- Aplicar una función de usuario recursivamente a cada miembro de una tabla. array_walk -- Aplica una función del usuario a cada elemento de una tabla. array -- Crear una tabla. arsort -- Ordena una tabla en orden inverso y mantiene la asociación de índices. asort -- Ordena una tabla y mantiene la asociación de índices (la función de ordenación inversa sería arsort): <?php $frutas = array ("d"=>"limon", "a"=>"naranja", "b"=>"platano", "c"=>"manzana"); asort($frutas); reset($frutas); while (list($key, $val) = each($frutas)) { echo "$key = $val\n"; } ?> El resultado del ejemplo seria: d = limon c = manzana a = naranja b = platano compact -- Crea una tabla que contiene variables y sus valores. count -- Cuenta los elementos de una tabla o propiedades de un objeto: <?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $result = count($a); // $result == 3 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3 $result = count(null); // $result == 0 $result = count(false); // $result == 1 ?> current -- Devuelve el elemento actual de una tabla. each -- Devuelve el siguiente par clave/valor de una tabla y avanza el apuntador. end -- Mueve el puntero interno de una tabla al último elemento. extract -- Importa variables a la tabla de símbolos desde una tabla. in_array -- Revisa si un valor existe en una tabla. key -- Obtiene una clave de una tabla asociativa. krsort -- Ordena una tabla por clave en orden inverso. ksort -- Ordena una tabla por clave (ordenación inversa con krsort): <?php $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); ksort($fruits); reset($fruits); while (list($key, $val) = each($fruits)) { echo "$key = $val\n"; } ?> El resultado del ejemplo seria: a = orange b = banana c = apple d = lemon list -- Asigna variables como si fueran una tabla. Sólo funciona con tablas de índices numéricos, asumiendo como primer valor el número 0: <?php $info = array('coffee', 'brown', 'caffeine'); // Listing all the variables list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; // Listing some of them list($drink, , $power) = $info; echo "$drink has $power.\n"; // Or let's skip to only the third one list( , , $power) = $info; echo "I need $power!\n"; ?> natcasesort -- Ordena una tabla usando un algoritmo de "orden natural" sin distinguir mayúsculas de minúsculas. natsort -- Ordena una tabla usando un algoritmo de "orden natural". next -- Avanza el puntero interno de una tabla. pos -- Alias de current(). prev -- Rebobina el puntero interno de una tabla. range -- Crea una tabla que contiene un rango de elementos. reset -- Fija el puntero interno de una tabla a su primer elemento. rsort -- Ordena una tabla en orden inverso. shuffle -- Mezcla una tabla. sizeof -- Alias of count(). sort -- Ordena una tabla. uasort -- Ordena una tabla mediante una función de comparación definida por el usuario y mantiene la asociación de índices. uksort -- Ordena una tabla por claves mediante una función definida por el usuario. usort -- Ordena una tabla por sus valores usando una función de comparación definida por el usuario. Sólo los usuarios registrados pueden escribir comentarios. Por favor, valídate o regístrate. Powered by AkoComment 2.0! |