La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ECOM-6030 CAPÍTULO 3 USING ARRAYS Prof. Nelliud D. Torres © - Derechos Reservados.

Presentaciones similares


Presentación del tema: "ECOM-6030 CAPÍTULO 3 USING ARRAYS Prof. Nelliud D. Torres © - Derechos Reservados."— Transcripción de la presentación:

1 ECOM-6030 CAPÍTULO 3 USING ARRAYS Prof. Nelliud D. Torres © - Derechos Reservados

2 CONTENIDO ARREGLOS NUMÉRICOS INDEXADOS ARREGLOS NO-NUMÉRICOS INDEXADOS OPERADORES DE ARREGLOS ARREGLOS MULTIDIMENSIONALES ORGANIZAR ARREGLOS (SORT) FUNCIONES DE ARREGLOS 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 2

3 ARREGLOS Es una variable que almacena una secuencia de valores. Multidimensional array – Son arreglos que contienen otros arreglos. PHP maneja arreglos numéricamente indexados y asociativos. Los arreglos asociativos manejan palabras en lugar de números. En este capítulo incorporamos arreglos al laboratorio que estamos trabajando. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 3 Pag. 79

4 SCALAR VARIABLES Una variable ‘scalar’ es una localización en memoria con strings (en lugar de número) en el cual se almacena un solo valor. El concepto es similar al nombre de un arreglo en donde se almacenan valores. El siguiente diagrama muestra como se almacenarían en un arreglo los productos que se utilizan en la fórmula. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 4 Pag. 80 TiresOilSpark Plugs product

5 DIAGRAMA DE ARREGLOS 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 5 Pag. 80 Array elements 0 1 2 3 4 Valor 1 Valor 2 Valor 3 Valor 4 Valor 5 Associated index, key o suscrito Se pueden utilizar números o caracteres (string) para el associated index Árreglo

6 CREANDO ARREGLOS Podemos crear un suscrito con sus datos de la siguiente manera: $productos = array( ‘Tires’, ‘Oil’, ‘Spark Plugs’ ); Para crear un arreglo con rango numérico del 1 al 10 usamos la siguiente directiva: $numeros = range(1,10); Para crear una lista con valores impares: $impares = range(1,10,2); También se puede crear la lista con letras: $letras = range(‘a’, ‘z’); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 6 Pag. 81

7 ACCEDIENDO CONTENIDO DE ARREGLOS Para acceder el contenido de un arreglo, utilizamos su nombre. Si la variable es un arreglo se accede el contenido utilizando el nombre de la variable y el suscrito, key o índice. El índice se pone entre brackets. El siguiente ejemplo muestra el contenido del arreglo llamado products. (Tires, Oil y Spark Plugs) $products[0], $products[1], $products[2] En PHP como en C, el primer índice comienza en cero. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 7 Pag. 81

8 TRABAJANDO CONTENIDO DE ARREGLOS Para cambiar el contenido de un arreglo: $products[0] = ‘Fuses’; Para incluir un nuevo elemento. $products[3] = ‘Fuses’; Para mostrar el contenido de un arreglo: echo “$products[0] $products[1] $products[2] $products[3]” El siguiente ejemplo crea el mismo arreglo sin la necesidad de definirlo primero: $products[0] = ‘Tires’; $products[1] = ‘Oil ’; $products[2] = ‘Spark Plugs’; 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 8 Pag. 82 Si products no existe, se crea un arreglo de un elemento y los demás se van incluyendo dinámicamente

9 USO DE CICLOS PARA ACCEDER EL ARREGLO Como un arreglo es indexado por una secuencia de números, se puede utilizar la instrucción for para mostrar su contenido. Ejemplo: for ( $i = 0; $i<3; $i++) echo “$products[$i]”; También se puede utilizar la instrucción foreach. foreach ($products as $current) echo $current.’ ‘; 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 9 Pag. 82 Muestra los elementos separados por un espacio en blanco en la misma línea

10 USO DE ÍNDICES PHP permite manejar arreglos en los que se puede asociar cualquier suscrito con cada valor. Ejemplo: $prices = array(‘Tires’=>100, ‘Oil’=>10, ‘Spark Plugs’=>4 ); En el ejemplo anterior se crea el arreglo utilizando de índices los nombres de los productos y como elemento el precio de cada uno. Otros ejemplos que crean el mismo arreglo son: $prices = array(‘Tires’=>100); $prices[‘Oil’] = 10; $prices[‘Spark Plugs’] = 4; 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 10 Pag. 83 $prices[‘Tires’] = 100; $prices[‘Oil’] = 10; $prices[‘Spark Plugs’] = 4;

11 CICLOS CON AREGLOS DE ÍNDICE NO NUMÉRICO Al utilizar arreglos con índices no numéricos, no se puede utilizar la instrucción for, sino eachfor. Ejemplo: foreach ($prices as $key => $value) echo $key.’=>’.$value.’ ’; Otro ejemplo que mostraría el arreglo es: while( $element = each( $prices )) { echo $element[ ‘key’ ]; echo ‘-‘; echo $element[ ‘value’ ]; echo ‘ ‘; } 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 11 Pag. 83-84 each es un construct que crea las variables key y value automáticamente.

12 CICLOS CON AREGLOS DE ÍNDICE NO NUMÉRICO (CONT.) Otra forma más elegante y común de crear el mismo ciclo anterior es con el contructor list: Ejemplo: list( $product, $price) = each( $prices ); El ciclo while quedaría así: while( list( $product, $price ) = each( $prices )) { echo “$product - $price‘ ‘; } Si se desea recorrer el arreglo nuevamente, se utiliza la instrucción reset. Ej: reset($prices); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 12 Pag. 84-85 Las variables $product y $price son creadas y se pueden utilizar dentro del ciclo.

13 OPERADORES DE ARREGLOS OPERADORNOMBREEJEMPLORESULTADO +Union $a + $b El arreglo $b se añade (append) al arreglo $a. ==Equality $a == $b Devuelve cierto si los elementos de $a son iguales a los elementos de $b. ===Identity $a === $b Devuelve cierto si los elementos de $a son iguales a los elementos de $b y en el mismo orden. !=Inequality $a != $b Cierto si $a y $b no contienen los mismos elementos <>Inequality $a <> $b Igual que el anterior. !==Non-identity $a !== $b Cierto si no contienen los mismos elementos en el mismo orden. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 13 Pag. 85

14 ARREGLOS EN DOS DIMENSIONALES Un arreglo puede componerse a su vez de arreglos y por lo tanto crear un arreglo de dos dimensiones. Para crear el arreglo anterior se utilizan las siguientes instrucciones: $products = array( array( ‘TIR’, ‘Tires’, 100 ), array( ‘OIL’, ‘Oil’, 10 ), array( ‘SPK’, ‘Spark Plugs’, 4 )); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 14 Pag. 86 CódigoDescripciónPrecio TIRTires100 OILOil10 SPKSpark Plugs4

15 ARREGLOS BIDIMENSIONALES (CONT.) Para mostrar el contenido del arreglo multidimensional se pueden usar estas instrucciones. echo ‘|’.$products[0][0].’|’.$products[0][1].’|’.$products[0][2].’| ’; echo ‘|’.$products[1][0].’|’.$products[1][1].’|’.$products[1][2].’| ’; echo ‘|’.$products[2][0].’|’.$products[2][1].’|’.$products[2][2].’| ’; O con el siguiente ciclo for: for ( $row = 0; $row < 3; $row++) { for ($column = 0; $column < 3, $column++ ) { echo ‘|’.$products[$row][$column]; } echo ‘| ’; } 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 15 Pag. 87

16 ARREGLOS BIDIMENSIONALES CON NOMBRES - CREACIÓN Si deseamos crear un arreglo multidimensional y hacer referencia por nombre, escribimos lo siguiente: $products = array( array ‘Code’ => ‘TIR’, ‘Description’=> ‘Tires’, ‘Price’ => 100 ), array ‘Code’ => ‘OIL’, ‘Description’=> ‘Oil’, ‘Price’ => 10 ), array ‘Code’ => ‘SPK’, ‘Description’=> ‘Spark Plugs’, ‘Price’ => 4 ) ); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 16 Pag. 87-88

17 ARREGLOS BIDIMENSIONALES CON NOMBRES - CICLO Si deseamos recorrer el arreglo multidimensional, el código sería: for ( $row = 0; $row < 3; $row++ ) { echo ‘|’.$products[$row][‘Code’].’|’.$products[$row][‘Description’].’|’.$products[$row][‘Price’].’| ’; Utilizando las funciones each() y list() se puede crear el siguiente ciclo. Ojo-note que se necesita un ciclo while. for ( $row = 0; $row < 3; $row++ ) { while ( list( $key, $value ) = each( $products[ $row ])) { echo “|$value”; } echo ‘| ’; } 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 17 Pag. 87-88

18 ARREGLOS MULTIDIMENSIONALES Un arreglo puede ser mayor de dos dimensiones. Ej. Para poder crear el arreglo del diagrama en tres dimensiones, se utilizan las instrucciones que aparecen en el próximo slide: 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 18 Pag. 86 Truck Parts CódigoDescripciónPrecio TIRTires100 OILOil10 SPKSpark Plugs4 Van Parts CódigoDescripciónPrecio TIRTires100 OILOil10 SPKSpark Plugs4 Car Parts CódigoDescripciónPrecio TIRTires100 OILOil10 SPKSpark Plugs4

19 ARREGLOS MULTIDIMENSIONALES - CREACIÓN $products = array( array ( array( ‘CAR_TIR’, ‘Tires’,100), array( ‘CAR_OIL’, ‘Oil’,10), array( ‘CAR_SPK’, ‘Spark Plugs’,4), ) array ( array( ‘VAN_TIR’, ‘Tires’,120), array( ‘VAN_OIL’, ‘Oil’,12), array( ‘VAN_SPK’, ‘Spark Plugs’,5), ) array ( array( ‘TRK_TIR’, ‘Tires’,150), array( ‘TRK_OIL’, ‘Oil’,15), array( ‘TRK_SPK’, ‘Spark Plugs’,6), ) ); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 19 Pag. 87-88

20 RECORRER ARREGLO DE TRES DIMENSIONES for ( $layer = 0; $layer < 3; $layer++) { echo “Layer $layer ”; for ($row = 0; $row < 3; $row++ ) { for ( $column = 0; $column < 3; $column++ ) { echo ‘|’.$categories[$layer][$row][$column]; } echo ‘| ’; } 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 20 Pag. 87-88

21 ORDENAR ARREGLOS - SORT Para ordenar un arreglo de una sola dimensión, escribimos lo siguiente: $products = array( ‘Tires’, ‘Oil’, ‘Spark Plugs’); sort($products); Quedarían en el siguiente orden: Oil, Spark Plugs, Tires. $prices= array( 100, 10, 4 ); sort($prices); Quedarían en el siguiente orden: 4, 10, 100 Existe un segundo argumento en la función sort que indica lo siguiente: – SORT_REGULAR – Valor default. – SORT_NUMERIC – Valores numéricos – SORT_STRING – Cadenas de caracteres. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 21 Pag. 90

22 ORDENANDO DESCENDENTEMENTE rsort() – Organiza los datos en orden descendente. arsort() – Permite ordenar un arreglo con keys descriptivos sin que se mezclen el valor del elemento con la descripción en orden descendente. krsort() – Permite ordenar un arreglo por su key descriptivo y mantiene su elemento inicial en orden descendente. OJO – No se va adiscutir Sort en muchas dimensiones. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 22 Pag. 91

23 REORGANIZANDO ARREGLOS shuffle() – Organiza elementos en un arreglo al azar. array_reverse() – Te invierte el orden de los elementos en tu arreglo. El primer elemento pasa a ser el último y viceversa. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 23 Pag. 94

24 OTRAS MANIPULACIONES DE ARREGLOS each() – Captura los índices, tanto numéricos como en palabras. Avanza el pointer en el arreglo al próximo elemento. current() – Devuelve el primer elemento. reset() – Devuelve el pointer al primer elemento. end() – Pone el pointer en el último elemento. next() – Avanza el pointer en el arreglo al próximo elemento. pos() – Indica posición del pointer. prev() – Mueve el pointer al próximo elemento en el arreglo. Ejemplo: Para recorrer un arreglo al revés: $value = end($array); while ($value) { echo “$value ”; $value = prev($array); } 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 24 Pag. 100

25 OTRAS MANIPULACIONES DE ARREGLOS (CONT. - 1) Si se desea trabajar o modificar todos los elementos de un arreglo, podemos utilizar la función array_walk(). Ejemplo: function my_print($value) { echo “$value ”; } array_walk($array, ‘my_print’); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 25 Pag. 101 Hay que definir la función que va a trabajar el arreglo Aquí se invoka la función y se indica el nombre del arreglo que se va a utilizar.

26 OTRAS MANIPULACIONES DE ARREGLOS (CONT. - 2) count() – Cuenta el número de elementos que tenga un arreglo. sizeof() – Trabaja similar al count(). array_count_values() – Cuenta las veces que cada valor unico del arreglo se repite. Ejemplo: $array = array(4,5,1,2,3,1,2,1); $ac = array_count_values($array); Esto crea un arreglo llamado $ac con el siguiente contenido: Key Value 41 51 132 31 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 26 Pag. 102 El 4, 5 y 3 se repiten una sola vez en el arreglo. El 1 se repite 3 veces y el 2 se repite 2 veces.

27 OTRAS MANIPULACIONES DE ARREGLOS (CONT. - 3) extract() – Convierte elementos del arreglo a variables (scalar variable), cada variable con su propio valor. Ejemplo: $array = array(‘key1’=>’value1’,’key2’=>’value2’,’key3’=>’value3’); extract($array); echo “$key1 $key2 $key3”; Va a producir el siguiente resultado: value1 value2 value3 Para buscar más información sobre arreglos, ir a la dirección: www.php.net/arraywww.php.net/array 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 27 Pag. 103

28 LABORATORIO 1 Crear la página principal de Bob’s. El usuario desea que cada vez que suba la página, muestre tres de las piezas que el vende. Estas piezas deben cambiar cada vez que el usuario entre a la página o se haga un refresh de la misma. Se necesita utilizar aquí la función shuffle(). Se necesitan las gráficas que se pueden conseguir en la página del profesor. A continuación se muestra el código. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 28 Pag. 94

29 LABORATORIO 1 - CÓDIGO <?php $pictures = array('tire.jpg', 'oil.jpg', 'spark_plug.jpg', 'door.jpg', 'steering_wheel.jpg', 'thermostat.jpg', 'wiper_blade.jpg', 'gasket.jpg', 'brake_pad.jpg'); shuffle($pictures); ?> Bob's Auto Parts Bob's Auto Parts 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 29 Pag. 94 <?php for ( $i = 0; $i < 3; $i++ ) { echo ' <img src="'; echo $pictures[$i]; echo '"width="100" height="100"> '; } ?> Aquí reorganiza el orden Aquí se muestra el dibujo en un ciclo que se repite tres veces.

30 LABORATORIO 1 - PANTALLA 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 30 Pag. 95

31 LABORATORIO 2 Crear un código que lea las órdenes de los clientes que están en un archivo secuencial y las pase a un arreglo. El código es similar al listado 2.3 del capítulo anterior. La diferencia es que utiliza la función file() para cargar el archivo en una arreglo automáticamente y luego mostrarlo del arreglo al browser. Se tiene que utilizar el archivo de ordenes de los laboratorios anteriores. A continuación se muestra el código. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 31 Pag. 96

32 LABORATORIO 2 - CÓDIGO <?php //create short variable name $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $orders= file("$DOCUMENT_ROOT/./Cap itulo-3/orders.txt"); $number_of_orders = count($orders); 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 32 Pag. 96-97 if ($number_of_orders == 0) { echo ' No orders pending. Please try again later. '; } for ($i=0; $i<$number_of_orders; $i++) { echo $orders[$i].' '; } ?> Aquí lee y guarda en el arreglo llamado orders lo que lea del archivo

33 LABORATORIO 2 - PANTALLA 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 33 Pag. 97

34 LABORATORIO 3 Crear un código que lea las órdenes de los clientes que están en un archivo secuencial, las pase a un arreglo y finalmente las muestre en pantalla en formato de tabla. Se tiene que utilizar el archivo de ordenes de los laboratorios anteriores. A continuación se muestra el código. 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 34 Pag. 97

35 LABORATORIO 3 - CÓDIGO <?php //create short variable name $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; ?> Bob's Auto Parts - Customer Orders Bob's Auto Parts Customer Orders <?php //Read in the entire file. //Each order becomes an element in the array $orders= file("$DOCUMENT_ROOT/./Capitulo-3/orders.txt"); // count the number of orders in the array $number_of_orders = count($orders); if ($number_of_orders == 0) { echo ' No orders pending. Please try again later. '; } echo " \n"; echo ' Order Date Tires Oil 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 35 Pag. 97-98 Spark Plugs Total Address '; for ($i=0; $i<$number_of_orders; $i++) { //split up each line $line = explode( "\t", $orders[$i] ); // keep only the number of items ordered $line[1] = intval( $line[1] ); $line[2] = intval( $line[2] ); $line[3] = intval( $line[3] ); // output each order echo " $line[0] $line[1] $line[2] $line[3] $line[4] $line[5] "; } echo ' '; ?>

36 LABORATORIO 3 - PANTALLA 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 36 Pag. 99

37 REFERENCIAS PHP and MySQL Web Development, Third Edition, Luke Welling, and Laura Thomson http://www.easyphp.org/ www.php.net/array 8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 37


Descargar ppt "ECOM-6030 CAPÍTULO 3 USING ARRAYS Prof. Nelliud D. Torres © - Derechos Reservados."

Presentaciones similares


Anuncios Google