Arreglos en PHP

5,586 views

Published on

Manejo de arreglos en PHP y funciones para su uso.

Contáctame:
Twitter: @nmicht
Blog: http://michelle.slmx.org

Published in: Technology
2 Comments
6 Likes
Statistics
Notes
No Downloads
Views
Total views
5,586
On SlideShare
0
From Embeds
0
Number of Embeds
140
Actions
Shares
0
Downloads
0
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

Arreglos en PHP

  1. 1. ArreglosPROGRAMACIÓN PARA INTERNET ● Los arreglos son los reyes indiscutibles de las estructuras de datos avanzadas en PHP. ● Los arreglos en PHP son extremadamente flexibles, permiten llaves numéricas de incremento automático, llaves alfanuméricas o una mezcla de ambos, y son capaces de almacenar casi cualquier valor, incluyendo otros arreglos. ● Con más de setenta funciones para la manipulación de ellos, los arreglos pueden hacer en la práctica cualquier cosa que puedas imaginar y algo más. Lic. Nancy Michelle Torres Villanueva 1
  2. 2. Arreglos...PROGRAMACIÓN PARA INTERNET ● Todos los arreglos son colecciones ordenadas de elementos, llamados elementos. ● Cada elemento tiene un valor, y es identificada por una llave que es exclusiva del arreglo al que pertenece. ● Las claves pueden ser números enteros o cadenas. Lic. Nancy Michelle Torres Villanueva 2
  3. 3. Creación de arreglosPROGRAMACIÓN PARA INTERNET ● $a = array (10, 20, 30); ● $b = array (’a’ => 10, ’b’ => 20, ’cee’ => 30); ● $c = array (5 => 1, 3 => 2, 1 => 3,); ● $d = array(); ● $e = array(Hola, Adios); ● $f = array(“uno”, “dos”, “tres”); Lic. Nancy Michelle Torres Villanueva 3
  4. 4. Acceso a los valoresPROGRAMACIÓN PARA INTERNET Los valores contenidos en un arreglo se pueden recuperar y modificar usando corchetes [ ]. Lic. Nancy Michelle Torres Villanueva 4
  5. 5. PROGRAMACIÓN PARA INTERNET ● Siguiente llave numerica mas grande $x[] = 10; ● Asignamos en que llave guardar $x[’aa’] = 11; ● Imprimimos lo guardado en la llave 0, lo cual será 10 echo $x[0]; Lic. Nancy Michelle Torres Villanueva 5
  6. 6. PROGRAMACIÓN PARA INTERNET $newArray[0] = "PHP"; $newArray[1] = "MySQL"; $newArray[2] = "Apache"; ● ¿Qué hace? $newArray[2] = "Cherokee"; Lic. Nancy Michelle Torres Villanueva 6
  7. 7. PROGRAMACIÓN PARA INTERNET $shopping = array( ); $shopping[] = "Leche"; $shopping[] = "Cafe"; $shopping[] = "Azucar"; ● En que posiciones ha quedado cada elemento? Lic. Nancy Michelle Torres Villanueva 7
  8. 8. PROGRAMACIÓN PARA INTERNET $array = array( "primero"=>1, "segundo"=>2, "tercero"=>3); ● Qué imprime? print $array["segundo"]; Lic. Nancy Michelle Torres Villanueva 8
  9. 9. PROGRAMACIÓN PARA INTERNET $numeros = array( 1=>"uno", "dos", "tres", "cuatro"); ● Cuál es la llave del item “tres”?? Lic. Nancy Michelle Torres Villanueva 9
  10. 10. PROGRAMACIÓN PARA INTERNET $numeros = array( 1=>"uno", 3=>"tres", 5=>"cinco"); $numeros[]="otro"; ● En que llave quedó el elemento “otro”? Lic. Nancy Michelle Torres Villanueva 10
  11. 11. PROGRAMACIÓN PARA INTERNET $a = array ( ’4’ => 5, ’a’ => ’b’); $a[] = 44; ● En qué llave quedará el item 44? Lic. Nancy Michelle Torres Villanueva 11
  12. 12. PROGRAMACIÓN PARA INTERNET $a = array ( ’A’ => “Esta es una A”, ’B’ => “Esta es una B”); $a[] = “Esta que será”; ● En qué llave quedará el item “Esta que será”? Lic. Nancy Michelle Torres Villanueva 12
  13. 13. PROGRAMACIÓN PARA INTERNET $numeros = array(1=>"uno", 3=>"tres", 5=>"cinco"); $numeros[2] = "dos"; $numeros[4] = "cuatro"; $numeros[6] = "seis"; ● En que orden ha quedado el arreglo? Lic. Nancy Michelle Torres Villanueva 13
  14. 14. PROGRAMACIÓN PARA INTERNET ● Se dice pues que las llaves son automáticamente incrementales y siempre los elementos se agregarán en el siguiente valor mayor posible y al final del arreglo. ● Tenga en cuenta que las llaves diferencian entre mayúsculas y minúsculas. Por lo tanto, la llave "A" es diferente de a, pero las llaves 1 y 1 son los mismos. Lic. Nancy Michelle Torres Villanueva 14
  15. 15. Impresión de arreglosPROGRAMACIÓN PARA INTERNET ● PHP provee dos funciones para imprimir el valor de una variable recursivamente: ● print_r() ● var_dump() Lic. Nancy Michelle Torres Villanueva 15
  16. 16. print_r() y var_dump()PROGRAMACIÓN PARA INTERNET ● var_dump() muestra además el tipo de dato ● var_dump() puede mostrar el valor de varias variables al mismo tiempo ● print_r() puede regresar el valor como una cadena Lic. Nancy Michelle Torres Villanueva 16
  17. 17. Arreglos multidimensionalesPROGRAMACIÓN PARA INTERNET ● A menudo los datos no pueden ser representados en un arreglo sencillo de escalar en valores enteros, cadenas, booleanos, y flotantes. Algunos datos sólo pueden estar representados cuando los arreglos tienen otros arreglos de valores. Lic. Nancy Michelle Torres Villanueva 17
  18. 18. PROGRAMACIÓN PARA INTERNET $array = array(); $array[] = array( ’tu’, ’yo’); $array[] = array( ’el’, ’nos’); echo $array[0][1] . $array[1][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 18
  19. 19. PROGRAMACIÓN PARA INTERNET $planetas = array( array("Mercurio", 0.39, 0.38), array("Venus", 0.72, 0.95), array("Tierra", 1.0, 1.0), array("Marte", 1.52, 0.53) ); print $planetas[2][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 19
  20. 20. PROGRAMACIÓN PARA INTERNET $planetas2 = array( "Mercurio"=> array("dist"=>0.39, "dia"=>0.38), "Venus" => array("dist"=>0.72, "dia"=>0.95), "Tierra" => array("dist"=>1.0, "dia"=>1.0, "satelites"=>array("Luna")), "Marte" => array("dist"=>0.39, "dia"=>0.53, "satelites"=>array("Phobos", "Deimos")) ); print $planetas2["Tierra"][satelites"][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 20
  21. 21. Asignando a variables independientesPROGRAMACIÓN PARA INTERNET ● A veces es más fácil trabajar con los valores de un arreglo mediante la asignación a las variables individuales. Si bien esto puede ser logrado mediante la extracción de elementos individuales y la asignación de cada uno de ellos a una variable diferente, PHP ofrece un acceso rápido. Lic. Nancy Michelle Torres Villanueva 21
  22. 22. $info = array(café, color, cafeína); ● Todas las variablesPROGRAMACIÓN PARA INTERNET list($bebida, $color, $componente) = $info; ● Solo algunas variables list($bebida, , $componente) = $info; ● Solo la tercera list( , , $componente) = $info; Lic. Nancy Michelle Torres Villanueva 22
  23. 23. Unión de arreglosPROGRAMACIÓN PARA INTERNET ● Se logra con el operador + ● Los elementos con llaves repetidas solo se muestran una vez, si el contenido es distinto, esto representa perdida de información Lic. Nancy Michelle Torres Villanueva 23
  24. 24. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 3); $b = array (’a’ => 1, ’b’ => 2, ’c’ => 3); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 24
  25. 25. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 3); $b = array (’a’ => 1, 2, 3); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 25
  26. 26. PROGRAMACIÓN PARA INTERNET $a = array (a => 1, b => 2, c => 3); $b = array (a => 4, b => 5, c => 6); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 26
  27. 27. PROGRAMACIÓN PARA INTERNET $cosas = array("silla", "mesa", "maleta", "caja"); $edificios = array("casa", "depa", "palacio"); $partes = array("cabeza", "pies"); $agregados = $partes + $edificios + $cosas; ● Cuál es el contenido de $agregados? Lic. Nancy Michelle Torres Villanueva 27
  28. 28. Unión de arreglos sin perder elementosPROGRAMACIÓN PARA INTERNET ● La funcion array_merge() concatena uno o mas arreglos, agregandolos al final. ● Si los arreglos tienen llaves de cadenas iguales, entonces el ultimo valor va a sobrescribir por la vez previa en que aparecio la llave. Lic. Nancy Michelle Torres Villanueva 28
  29. 29. PROGRAMACIÓN PARA INTERNET $array1 = array("color" => "rojo", 2, 4); $array2 = array("a", "b", "color" => "verde", "forma" => "trapezoide", 4); $result = array_merge($array1, $array2); ● ( [color] => verde, [0] => 2, [1] => 4, [2] => a, [3] => b, [forma] => trapezoide, [4] => 4) Lic. Nancy Michelle Torres Villanueva 29
  30. 30. Comparando arreglosPROGRAMACIÓN PARA INTERNET ● $a = array (1, 2, 3); ● $b = array (1 => 2, 2 => 3, 0 => 1); ● $c = array (’a’ => 1, ’b’ => 2, ’c’ => 3); ● ● $a == $b ● $a === $b ● $a == $c Lic. Nancy Michelle Torres Villanueva 30
  31. 31. Operadores de comparación de arreglosPROGRAMACIÓN PARA INTERNET ● == Mismo número de elementos con las mismas llaves sin importar el orden. ● === Mismo par llave/valor en el mismo orden Lic. Nancy Michelle Torres Villanueva 31
  32. 32. Tamaño de un arregloPROGRAMACIÓN PARA INTERNET ● El tamaño de un arreglo puede ser obtenido con la función count(). ● Funciona con cualquier variable, no necesariamente arreglos, si se quiere asegurar de que lo este usando en un arreglo, deberá primero utilizar la función is_array() Lic. Nancy Michelle Torres Villanueva 32
  33. 33. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 4); $b = array(); $c = 10; echo count($a); echo count($b); if is_array($c) echo count($c); Lic. Nancy Michelle Torres Villanueva 33
  34. 34. Repeticiones de un elemento en el arregloPROGRAMACIÓN PARA INTERNET ● count() devuelve el total de elementos en un arreglo, pero si se desea contar de manera unica los elementos se utiliza array_count_values(). ● Devuelve un arreglo asociando cada elemento con la cantidad de repeticiones. Lic. Nancy Michelle Torres Villanueva 34
  35. 35. $mascotas = array( "Juan"=>"Perro",PROGRAMACIÓN PARA INTERNET "Ana"=>"Conejo", "Pedro"=>"Gato", "Maria"=>"Hamster", "Luis"=>"Perro", "Paco"=>"Gato"); $frecuencia = array_count_values($mascotas); [Perro] => 2 [Conejo] => 1 [Gato] => 2 [Hamster] => 1 Lic. Nancy Michelle Torres Villanueva 35
  36. 36. Determinar si un elemento en una posición dada existePROGRAMACIÓN PARA INTERNET $a = array (’a’ => 1, ’b’ => 2); echo isset ($a[’a’]); echo isset ($a[’c’]); $a = array (’a’ => NULL, ’b’ => 2); echo isset ($a[’a’]); ● Qué impresiones se obtienen? Lic. Nancy Michelle Torres Villanueva 36
  37. 37. Determinar si una llave existePROGRAMACIÓN PARA INTERNET $a = array (’a’ => NULL, ’b’ => 2); echo array_key_exists (a,$a); ● Qué aparece en pantalla? Lic. Nancy Michelle Torres Villanueva 37
  38. 38. Buscar si un elemento existe en el arregloPROGRAMACIÓN PARA INTERNET $a = array (’a’ => NULL, ’b’ => 2); echo in_array (2, $a); ● Qué aparece en pantalla? ● Se puede pasar un tercer parámetro para obligar el tipo de dato. Lic. Nancy Michelle Torres Villanueva 38
  39. 39. Obtener la posición de un elemento en el arregloPROGRAMACIÓN PARA INTERNET ● array_search() funciona igual que in_array() solo que este devolverá la llave. Si el valor no fue encontrado devuelve false. ● Tiene un tercer parámetro opcional para obligar la concordancia del tipo de dato $a = array (’a’ => NULL, ’b’ => 2); echo array_search (2, $a); ● Qué aparece en pantalla? Lic. Nancy Michelle Torres Villanueva 39
  40. 40. Un arreglo con las llavesPROGRAMACIÓN PARA INTERNET ● Con array_keys() se obtiene un arreglo con las llaves de otro arreglo. ● Se pueden poner parámetros opcionales y entonces solo devolverá las llaves de los elementos indicados en los parámetros. Lic. Nancy Michelle Torres Villanueva 40
  41. 41. $mascotas = array( "Juan"=>"Perro",PROGRAMACIÓN PARA INTERNET "Ana"=>"Conejo", "Pedro"=>"Gato", "Maria"=>"Hamster", "Luis"=>"Perro", "Paco"=>"Gato"); $llaves = array_keys($mascotas); ("Juan”, “Ana”, “Pedro”, “Maria”, “Luis”, “Paco") $llaves = array_keys($mascotas,”Perro”); ("Juan”, “Luis") Lic. Nancy Michelle Torres Villanueva 41
  42. 42. Un arreglo sin llavesPROGRAMACIÓN PARA INTERNET ● La función array_values() genera un nuevo arreglo solamente con los valores y olvida las llaves Lic. Nancy Michelle Torres Villanueva 42
  43. 43. Eliminación de elementosPROGRAMACIÓN PARA INTERNET ● Un elemento puede ser eliminado de un arreglo, o un arreglo completo se puede eliminar llamando a unset ( ). ● Sin embargo, la eliminación de un elemento no reasigna indices. Lic. Nancy Michelle Torres Villanueva 43
  44. 44. PROGRAMACIÓN PARA INTERNET $favoritos = array("PHP", "Ace", "COBOL", "Java", "C++"); ● Eliminar COBOL del arreglo unset($favoritos[2]); Lic. Nancy Michelle Torres Villanueva 44
  45. 45. Eliminando elementos repetidosPROGRAMACIÓN PARA INTERNET ● La función array_unique() devuelve un arreglo sin items repetidos. ● Si el arreglo tiene llaves, se quedará con la primer llave, y las siguientes ocasiones en que se repita, serán omitidas. Lic. Nancy Michelle Torres Villanueva 45
  46. 46. Un arreglo rellenadoPROGRAMACIÓN PARA INTERNET ● La función array_fill() crea un arreglo rellenado con el dato indicado. ● Se debe indicar la primer llave, la cantidad de repeticiones y el dato a repetir. $unidad = array_fill(2, 5, "uno"); Array ( [2] => uno [3] => uno [4] => uno [5] => uno [6] => uno ) Lic. Nancy Michelle Torres Villanueva 46
  47. 47. Arreglo con una seriePROGRAMACIÓN PARA INTERNET ● La función range() crea un arreglo con una serie dentro. ● Se debe indicar el primer valor y el último valor. Puede indicarse como parámetro opcional el tipo de incremento $letras = range("a", "z", 5); Array ( [0] => a [1] => f [2] => k [3] => p [4] => u [5] => z ) Lic. Nancy Michelle Torres Villanueva 47
  48. 48. Invertir un llaves por valoresPROGRAMACIÓN PARA INTERNET ● La función array_flip() invierte las llaves por los valores en un arreglo. $a = array (’a’, ’b’, ’c’); array_flip ($a); ["a"]=> 0 , ["b"]=> 1 , ["c"]=> 2) Lic. Nancy Michelle Torres Villanueva 48
  49. 49. Invertir el orden de un arregloPROGRAMACIÓN PARA INTERNET ● La función array_reverse() invierte el orden de los elementos de un arreglo. $cont = array("cero", "uno", "dos", "tres", "cuatro"); $inverso = array_reverse($cont); Array ( [4] => cuatro [3] => tres [2] => dos [1] => uno [0] => cero ) Lic. Nancy Michelle Torres Villanueva 49
  50. 50. Convertir un arreglo en una cadenaPROGRAMACIÓN PARA INTERNET ● La función implode() regresa una cadena creada por la union de cada uno de los elementos en el arreglo, insertando una cadena de unión entre cada elemento. ● join() es un alias de implode() y funciona exactamente igual $animales = array("canguro", "leon", "jirafa”); implode(", ", $animales); Lic. Nancy Michelle Torres Villanueva 50
  51. 51. Convertir una cadena en un arregloPROGRAMACIÓN PARA INTERNET ● La función explode() regresa un arreglo de cadenas creadas por la ruptura de una cierta cadena en cada ocurrencia despues de un separador dado $palabras = explode(" ", "Ahora es el momento"); print_r($palabras); Array ( [0] => Ahora [1] => es [2] => el [3] => momento ) Lic. Nancy Michelle Torres Villanueva 51
  52. 52. Iteraciones en un arregloPROGRAMACIÓN PARA INTERNET ● Existen varias funciones para poder trabajar co las iteraciones dentro de un arreglo ● reset() Reinicia el puntero del arreglo para poder recorrerlo. ● prev() Recorre el puntero a la posición anterior ● next() Recorre el puntero a la siguiente posición ● current() Entrega el valor guardado en la posición actual ● key() Devuelve la llave de la posición actual ● end() Mueve el puntero a la posición final Lic. Nancy Michelle Torres Villanueva 52
  53. 53. $array = array(’foo’ => ’bar’, ’baz’, ’bat’ => 2);PROGRAMACIÓN PARA INTERNET function displayArray($array) { reset($array); while (key($array) !== null) { echo key($array).": ".current($array); next($array); } } Lic. Nancy Michelle Torres Villanueva 53
  54. 54. foreach()PROGRAMACIÓN PARA INTERNET ● Es una manera sencilla de recorrer una arreglo. $array = array(’foo’, ’bar’, ’baz’); foreach ($array as $key => $value) { echo "$key: $value"; } Lic. Nancy Michelle Torres Villanueva 54
  55. 55. Iteraciones con funcionesPROGRAMACIÓN PARA INTERNET ● array_walk() Aplica una función definida por el usuario a cada miembro de un arreglo. ● array_walk_recursive() Aplica una función definida por el usuario recursivamente a cada miembro de un arreglo. Lic. Nancy Michelle Torres Villanueva 55
  56. 56. $frutas = array("d" => "limon", "a" => "naranja", "b" => "platano", "c" => "manzana");PROGRAMACIÓN PARA INTERNET function test_print($valor, $llave) { echo "$llave. $valor<br />n"; } array_walk($frutas, test_print); Lic. Nancy Michelle Torres Villanueva 56
  57. 57. $frutas = array("d" => "limon", "a" => "naranja", "b" => "platano", "c" => "manzana");PROGRAMACIÓN PARA INTERNET function test_alter(&$valor, $llave, $prefix) { $valor = "$prefix: $valor"; } array_walk($frutas, test_print,Fruta: ); Lic. Nancy Michelle Torres Villanueva 57
  58. 58. $dulce = array(a => manzana, b => platano);PROGRAMACIÓN PARA INTERNET $frutas = array(dulce => $dulce, acido => limon); function test_print($valor, $llave) { echo "$llave tiene $valorn"; } array_walk_recursive($frutas, test_print); Lic. Nancy Michelle Torres Villanueva 58
  59. 59. Ordenar un arregloPROGRAMACIÓN PARA INTERNET ● Los elementos de un arreglo se ordenan ascedente o descendentemente, sin embargo, las llaves se perderan en el proceso. ● sort() Ascendentemente ● rsort() Descendentemente ● Se tiene un segundo parámetro opcional para indicar si el ordenamiento será alfabético o numérico Lic. Nancy Michelle Torres Villanueva 59
  60. 60. Banderas de ordenamientoPROGRAMACIÓN PARA INTERNET ● SORT_REGULAR – Compara items normalmente (No cambia los tipos) ● SORT_NUMERIC – Compara items numéricamente ● SORT_STRING – Compara items como cadenas ● SORT_LOCALE_STRING – Compara items como cadenas basado en la configuración local Lic. Nancy Michelle Torres Villanueva 60
  61. 61. PROGRAMACIÓN PARA INTERNET $numbers = array(24, 19, 3, 16, 56, 8, 171); sort($numbers); ● ( [0] => 3, [1] => 8, [2] => 16, [3] => 19, [4] => 24, [5] => 56, [6] => 171 ) rsort($numbers); ● ( [0] => 171, [1] => 56, [2] => 24, [3] => 19, [4] => 16, [5] => 8, [6] => 3 ) Lic. Nancy Michelle Torres Villanueva 61
  62. 62. PROGRAMACIÓN PARA INTERNET $arr = array ("1", 10, "Maria", "maria", "Memo", 1, 5, 9); sort($arr); ● En que orden quedará este arreglo? Lic. Nancy Michelle Torres Villanueva 62
  63. 63. Ordenar un arreglo manteniendo las llavesPROGRAMACIÓN PARA INTERNET ● Para que al ordenar las llaves se mantengan, se utilizan las funciones: ● asort() Ascendentemente ● arsort() Descendentemente Lic. Nancy Michelle Torres Villanueva 63
  64. 64. Ordenar un arreglo por sus llavesPROGRAMACIÓN PARA INTERNET ● Hemos visto como ordenar un arreglo en base a sus elementos, pero también podemos ordenarlo en base a sus llaves. ● ksort() Ascendentemente ● krsort() Descendentemente Lic. Nancy Michelle Torres Villanueva 64
  65. 65. Ordenar un arreglo utilizando una función definida por el usuarioPROGRAMACIÓN PARA INTERNET ● Si deseas ordenar un arreglo de alguna otra manera que no sea numérica o alfabéticamente, puedes crear tu propia función y luego mandar a ordenar con esa función. ● usort( ) Ordena el arreglo basado en el valor de cada elemento aplicando una nueva llave ● uasort( ) Mantiene el par llave/valor ● uksort( ) Reordena los elementos basado en la llave de cada elemento Lic. Nancy Michelle Torres Villanueva 65
  66. 66. function cmp_length($a, $b) {PROGRAMACIÓN PARA INTERNET if (strlen($a) < strlen($b)) return -1; if (strlen($a) > strlen($b)) return 1; //Si el tamaño es igual return 0; } Lic. Nancy Michelle Torres Villanueva 66
  67. 67. PROGRAMACIÓN PARA INTERNET $animals = array("cow", "ox", "hippopotamus", "platypus"); usort($animals, "cmp_length"); ● ( [0] => ox, [1] => cow, [2] => platypus, [3] => hippopotamus ) Lic. Nancy Michelle Torres Villanueva 67
  68. 68. Desordenando un arregloPROGRAMACIÓN PARA INTERNET ● La función shuffle() desacomoda un arreglo de manera random. Las llaves se pierden Lic. Nancy Michelle Torres Villanueva 68
  69. 69. Obtener un elemento randomPROGRAMACIÓN PARA INTERNET ● La función array_rand() toma uno o mas elementos random del arreglo y devuelve la llave de estos. Lic. Nancy Michelle Torres Villanueva 69
  70. 70. Arreglos como pilas y colasPROGRAMACIÓN PARA INTERNET ● PHP ofrece funciones para las actividades de push y pull en las pilas y para shift y unshift en las colas. ● array_push ● array_pop ● array_shift ● array_unshift Lic. Nancy Michelle Torres Villanueva 70
  71. 71. PROGRAMACIÓN PARA INTERNET $stack = array(); array_push($stack, ’bar’, ’baz’); $last_in = array_pop($stack); $queue = array(’qux’, ’bar’, ’baz’); $first_element = array_shift($queue); array_unshift($queue, ’foo’); Lic. Nancy Michelle Torres Villanueva 71
  72. 72. Diferencia entre dos arreglosPROGRAMACIÓN PARA INTERNET ● La función array_diff() compara dos arreglos y devuelve la diferencia. ● Devuelve un arreglo con todas las entradas del arreglo1 que no estan en los demás arreglos. ● No toma en cuenta las llaves, de modo que si se desea tomar en cuenta las llaves, se utiliza array_diff_assoc() Lic. Nancy Michelle Torres Villanueva 72
  73. 73. Diferencia entre dos arreglos en base a sus llavesPROGRAMACIÓN PARA INTERNET ● Para buscar las diferencias entre dos arreglos tomando en cuenta las llaves se utiliza la función array_diff_key() ● En ambas funciones se puede utilizar una función definida por el usuario y las funciones a utilizar son array_diff_uassoc() y array_diff_ukey() Lic. Nancy Michelle Torres Villanueva 73
  74. 74. Intersección de dos arreglosPROGRAMACIÓN PARA INTERNET ● La función array_intersect() devuelve todos los elementos del arreglo1 que existen en los demás arreglos. ● Si se desea revisar también las llaves se utiliza la función array_intersect_assoc(). ● array_intersect_key() se utiliza para validar las llaves. ● array_intersect_ukey() y array_intersect_uassoc() para validar con una función ● Lic. Nancy Michelle Torres Villanueva 74
  75. 75. Repaso de arreglosPROGRAMACIÓN PARA INTERNET ● print_r ● array_keys ● var_dump ● array_values ● list ● unset ● is_array ● array_unique ● count ● array_fill ● array_count_values ● array_range ● isset ● array_flip ● array_key_exists ● array_reverse ● in_array ● array_walk ● array_search ● array_walk_recursive Lic. Nancy Michelle Torres Villanueva 75
  76. 76. Repaso de arreglosPROGRAMACIÓN PARA INTERNET ● reset ● ksort ● prev ● krsort ● next ● usort ● current ● uasort ● key ● uksort ● end ● shuffle ● sort ● array_rand ● rsort ● array_merge ● asort ● array_push ● arsort ● array_pop Lic. Nancy Michelle Torres Villanueva 76
  77. 77. Repaso de arreglosPROGRAMACIÓN PARA INTERNET ● array_shift ● array_intersect_uassoc ● array_unshift ● array_intersect_ukey ● array_diff ● array_diff_assoc ● array_diff_key ● array_diff_uassoc ● array_diff_ukey ● array_intersect ● array_intersect_assoc ● array_intersect_key Lic. Nancy Michelle Torres Villanueva 77
  78. 78. Repaso Programación para InternetLic. Nancy Michelle Torres Villanueva
  79. 79. Question ¿Cómo se declaran arreglos? Programación para InternetLic. Nancy Michelle Torres Villanueva
  80. 80. Answer $variable = array(); $var[]= “cosa”; Programación para InternetLic. Nancy Michelle Torres Villanueva
  81. 81. Question¿Cuáles son los dos tipos de arreglos y cuáles son sus diferencias? Programación para Internet Lic. Nancy Michelle Torres Villanueva
  82. 82. Answer Normales y Asociativos Los normales son los que nollevan un indice en cambio los asociativos si llevan indice. Programación para InternetLic. Nancy Michelle Torres Villanueva
  83. 83. Question ¿Cómo elimino un arreglo? Programación para InternetLic. Nancy Michelle Torres Villanueva
  84. 84. Answerunset ($arreglo[pos]); esteelimina una posición y no reordena. unset ($arreglo); este elimina todo Programación para Internet Lic. Nancy Michelle Torres Villanueva
  85. 85. Question ¿Cómo separo unacadena en varias partes de un arreglo? Programación para InternetLic. Nancy Michelle Torres Villanueva
  86. 86. Answer Con la función explode()$variable = explode(" ", "ahora es el tiempo"); Programación para InternetLic. Nancy Michelle Torres Villanueva
  87. 87. Question ¿Cómo genero una cadena a partir de un arreglo? Programación para InternetLic. Nancy Michelle Torres Villanueva
  88. 88. AnswerCon la función implode o join print "Animales que he visto: " . implode(", ", $animalesVistos); Programación para Internet Lic. Nancy Michelle Torres Villanueva
  89. 89. Question¿Cómo ordeno un arreglosin perder el orden de las llaves(índices)? Programación para InternetLic. Nancy Michelle Torres Villanueva
  90. 90. Answer Con la función asort() Programación para InternetLic. Nancy Michelle Torres Villanueva
  91. 91. Question¿Cómo ordeno de manerainversa en base al índice? Programación para Internet Lic. Nancy Michelle Torres Villanueva
  92. 92. Answer Con la función krsort() Programación para InternetLic. Nancy Michelle Torres Villanueva
  93. 93. Question ¿Cuál es la diferencia entre la función array_search() y in_array()? Programación para InternetLic. Nancy Michelle Torres Villanueva
  94. 94. Answer La función array_search()devuelve la posición, si no existe devuelve falso.La función in_array() solo dice siexiste o no o devueve resultado booleano. Programación para Internet Lic. Nancy Michelle Torres Villanueva
  95. 95. Question¿Cuáles son las manerasde concatenar arreglos? Programación para InternetLic. Nancy Michelle Torres Villanueva
  96. 96. Answer Con + y merge La diferencia de estos son la manera de preservar la información en caso de estar repetida Programación para InternetLic. Nancy Michelle Torres Villanueva
  97. 97. Question ¿Cómo invierto un arreglo? Programación para InternetLic. Nancy Michelle Torres Villanueva
  98. 98. Answer Con la función array_reverse() Programación para InternetLic. Nancy Michelle Torres Villanueva
  99. 99. ArreglosPROGRAMACIÓN PARA INTERNET ● Los arreglos son los reyes indiscutibles de las estructuras de datos avanzadas en PHP. ● Los arreglos en PHP son extremadamente flexibles, permiten llaves numéricas de incremento automático, llaves alfanuméricas o una mezcla de ambos, y son capaces de almacenar casi cualquier valor, incluyendo otros arreglos. ● Con más de setenta funciones para la manipulación de ellos, los arreglos pueden hacer en la práctica cualquier cosa que puedas imaginar y algo más. Lic. Nancy Michelle Torres Villanueva 1
  100. 100. Arreglos...PROGRAMACIÓN PARA INTERNET ● Todos los arreglos son colecciones ordenadas de elementos, llamados elementos. ● Cada elemento tiene un valor, y es identificada por una llave que es exclusiva del arreglo al que pertenece. ● Las claves pueden ser números enteros o cadenas. Lic. Nancy Michelle Torres Villanueva 2
  101. 101. Creación de arreglosPROGRAMACIÓN PARA INTERNET ● $a = array (10, 20, 30); ● $b = array (’a’ => 10, ’b’ => 20, ’cee’ => 30); ● $c = array (5 => 1, 3 => 2, 1 => 3,); ● $d = array(); ● $e = array(Hola, Adios); ● $f = array(“uno”, “dos”, “tres”); Lic. Nancy Michelle Torres Villanueva 3
  102. 102. Acceso a los valoresPROGRAMACIÓN PARA INTERNET Los valores contenidos en un arreglo se pueden recuperar y modificar usando corchetes [ ]. Lic. Nancy Michelle Torres Villanueva 4
  103. 103. PROGRAMACIÓN PARA INTERNET ● Siguiente llave numerica mas grande $x[] = 10; ● Asignamos en que llave guardar $x[’aa’] = 11; ● Imprimimos lo guardado en la llave 0, lo cual será 10 echo $x[0]; Lic. Nancy Michelle Torres Villanueva 5
  104. 104. PROGRAMACIÓN PARA INTERNET $newArray[0] = "PHP"; $newArray[1] = "MySQL"; $newArray[2] = "Apache"; ● ¿Qué hace? $newArray[2] = "Cherokee"; Lic. Nancy Michelle Torres Villanueva 6
  105. 105. PROGRAMACIÓN PARA INTERNET $shopping = array( ); $shopping[] = "Leche"; $shopping[] = "Cafe"; $shopping[] = "Azucar"; ● En que posiciones ha quedado cada elemento? Lic. Nancy Michelle Torres Villanueva 7
  106. 106. PROGRAMACIÓN PARA INTERNET $array = array( "primero"=>1, "segundo"=>2, "tercero"=>3); ● Qué imprime? print $array["segundo"]; Lic. Nancy Michelle Torres Villanueva 8
  107. 107. PROGRAMACIÓN PARA INTERNET $numeros = array( 1=>"uno", "dos", "tres", "cuatro"); ● Cuál es la llave del item “tres”?? Lic. Nancy Michelle Torres Villanueva 9
  108. 108. PROGRAMACIÓN PARA INTERNET $numeros = array( 1=>"uno", 3=>"tres", 5=>"cinco"); $numeros[]="otro"; ● En que llave quedó el elemento “otro”? Lic. Nancy Michelle Torres Villanueva 10
  109. 109. PROGRAMACIÓN PARA INTERNET $a = array ( ’4’ => 5, ’a’ => ’b’); $a[] = 44; ● En qué llave quedará el item 44? Lic. Nancy Michelle Torres Villanueva 11
  110. 110. PROGRAMACIÓN PARA INTERNET $a = array ( ’A’ => “Esta es una A”, ’B’ => “Esta es una B”); $a[] = “Esta que será”; ● En qué llave quedará el item “Esta que será”? Lic. Nancy Michelle Torres Villanueva 12
  111. 111. PROGRAMACIÓN PARA INTERNET $numeros = array(1=>"uno", 3=>"tres", 5=>"cinco"); $numeros[2] = "dos"; $numeros[4] = "cuatro"; $numeros[6] = "seis"; ● En que orden ha quedado el arreglo? Lic. Nancy Michelle Torres Villanueva 13
  112. 112. PROGRAMACIÓN PARA INTERNET ● Se dice pues que las llaves son automáticamente incrementales y siempre los elementos se agregarán en el siguiente valor mayor posible y al final del arreglo. ● Tenga en cuenta que las llaves diferencian entre mayúsculas y minúsculas. Por lo tanto, la llave "A" es diferente de a, pero las llaves 1 y 1 son los mismos. Lic. Nancy Michelle Torres Villanueva 14
  113. 113. Impresión de arreglosPROGRAMACIÓN PARA INTERNET ● PHP provee dos funciones para imprimir el valor de una variable recursivamente: ● print_r() ● var_dump() Lic. Nancy Michelle Torres Villanueva 15
  114. 114. print_r() y var_dump()PROGRAMACIÓN PARA INTERNET ● var_dump() muestra además el tipo de dato ● var_dump() puede mostrar el valor de varias variables al mismo tiempo ● print_r() puede regresar el valor como una cadena Lic. Nancy Michelle Torres Villanueva 16
  115. 115. Arreglos multidimensionalesPROGRAMACIÓN PARA INTERNET ● A menudo los datos no pueden ser representados en un arreglo sencillo de escalar en valores enteros, cadenas, booleanos, y flotantes. Algunos datos sólo pueden estar representados cuando los arreglos tienen otros arreglos de valores. Lic. Nancy Michelle Torres Villanueva 17
  116. 116. PROGRAMACIÓN PARA INTERNET $array = array(); $array[] = array( ’tu’, ’yo’); $array[] = array( ’el’, ’nos’); echo $array[0][1] . $array[1][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 18
  117. 117. PROGRAMACIÓN PARA INTERNET $planetas = array( array("Mercurio", 0.39, 0.38), array("Venus", 0.72, 0.95), array("Tierra", 1.0, 1.0), array("Marte", 1.52, 0.53) ); print $planetas[2][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 19
  118. 118. PROGRAMACIÓN PARA INTERNET $planetas2 = array( "Mercurio"=> array("dist"=>0.39, "dia"=>0.38), "Venus" => array("dist"=>0.72, "dia"=>0.95), "Tierra" => array("dist"=>1.0, "dia"=>1.0, "satelites"=>array("Luna")), "Marte" => array("dist"=>0.39, "dia"=>0.53, "satelites"=>array("Phobos", "Deimos")) ); print $planetas2["Tierra"][satelites"][0]; ● Qué imprime? Lic. Nancy Michelle Torres Villanueva 20
  119. 119. Asignando a variablesPROGRAMACIÓN PARA INTERNET independientes ● A veces es más fácil trabajar con los valores de un arreglo mediante la asignación a las variables individuales. Si bien esto puede ser logrado mediante la extracción de elementos individuales y la asignación de cada uno de ellos a una variable diferente, PHP ofrece un acceso rápido. Lic. Nancy Michelle Torres Villanueva 21
  120. 120. $info = array(café, color, cafeína); ● Todas las variablesPROGRAMACIÓN PARA INTERNET list($bebida, $color, $componente) = $info; ● Solo algunas variables list($bebida, , $componente) = $info; ● Solo la tercera list( , , $componente) = $info; Lic. Nancy Michelle Torres Villanueva 22
  121. 121. Unión de arreglosPROGRAMACIÓN PARA INTERNET ● Se logra con el operador + ● Los elementos con llaves repetidas solo se muestran una vez, si el contenido es distinto, esto representa perdida de información Lic. Nancy Michelle Torres Villanueva 23
  122. 122. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 3); $b = array (’a’ => 1, ’b’ => 2, ’c’ => 3); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 24
  123. 123. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 3); $b = array (’a’ => 1, 2, 3); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 25
  124. 124. PROGRAMACIÓN PARA INTERNET $a = array (a => 1, b => 2, c => 3); $b = array (a => 4, b => 5, c => 6); $c = $a+$b; ● Cuál es el contenido de $c? Lic. Nancy Michelle Torres Villanueva 26
  125. 125. PROGRAMACIÓN PARA INTERNET $cosas = array("silla", "mesa", "maleta", "caja"); $edificios = array("casa", "depa", "palacio"); $partes = array("cabeza", "pies"); $agregados = $partes + $edificios + $cosas; ● Cuál es el contenido de $agregados? Lic. Nancy Michelle Torres Villanueva 27
  126. 126. Unión de arreglos sin perderPROGRAMACIÓN PARA INTERNET elementos ● La funcion array_merge() concatena uno o mas arreglos, agregandolos al final. ● Si los arreglos tienen llaves de cadenas iguales, entonces el ultimo valor va a sobrescribir por la vez previa en que aparecio la llave. Lic. Nancy Michelle Torres Villanueva 28
  127. 127. PROGRAMACIÓN PARA INTERNET $array1 = array("color" => "rojo", 2, 4); $array2 = array("a", "b", "color" => "verde", "forma" => "trapezoide", 4); $result = array_merge($array1, $array2); ● ( [color] => verde, [0] => 2, [1] => 4, [2] => a, [3] => b, [forma] => trapezoide, [4] => 4) Lic. Nancy Michelle Torres Villanueva 29
  128. 128. Comparando arreglosPROGRAMACIÓN PARA INTERNET ● $a = array (1, 2, 3); ● $b = array (1 => 2, 2 => 3, 0 => 1); ● $c = array (’a’ => 1, ’b’ => 2, ’c’ => 3); ● ● $a == $b ● $a === $b ● $a == $c Lic. Nancy Michelle Torres Villanueva 30
  129. 129. Operadores de comparación dePROGRAMACIÓN PARA INTERNET arreglos ● == Mismo número de elementos con las mismas llaves sin importar el orden. ● === Mismo par llave/valor en el mismo orden Lic. Nancy Michelle Torres Villanueva 31
  130. 130. Tamaño de un arregloPROGRAMACIÓN PARA INTERNET ● El tamaño de un arreglo puede ser obtenido con la función count(). ● Funciona con cualquier variable, no necesariamente arreglos, si se quiere asegurar de que lo este usando en un arreglo, deberá primero utilizar la función is_array() Lic. Nancy Michelle Torres Villanueva 32
  131. 131. PROGRAMACIÓN PARA INTERNET $a = array (1, 2, 4); $b = array(); $c = 10; echo count($a); echo count($b); if is_array($c) echo count($c); Lic. Nancy Michelle Torres Villanueva 33
  132. 132. Repeticiones de un elemento enPROGRAMACIÓN PARA INTERNET el arreglo ● count() devuelve el total de elementos en un arreglo, pero si se desea contar de manera unica los elementos se utiliza array_count_values(). ● Devuelve un arreglo asociando cada elemento con la cantidad de repeticiones. Lic. Nancy Michelle Torres Villanueva 34
  133. 133. $mascotas = array( "Juan"=>"Perro",PROGRAMACIÓN PARA INTERNET "Ana"=>"Conejo", "Pedro"=>"Gato", "Maria"=>"Hamster", "Luis"=>"Perro", "Paco"=>"Gato"); $frecuencia = array_count_values($mascotas); [Perro] => 2 [Conejo] => 1 [Gato] => 2 [Hamster] => 1 Lic. Nancy Michelle Torres Villanueva 35
  134. 134. Determinar si un elemento en unaPROGRAMACIÓN PARA INTERNET posición dada existe $a = array (’a’ => 1, ’b’ => 2); echo isset ($a[’a’]); echo isset ($a[’c’]); $a = array (’a’ => NULL, ’b’ => 2); echo isset ($a[’a’]); ● Qué impresiones se obtienen? Lic. Nancy Michelle Torres Villanueva 36
  135. 135. Determinar si una llave existePROGRAMACIÓN PARA INTERNET $a = array (’a’ => NULL, ’b’ => 2); echo array_key_exists (a,$a); ● Qué aparece en pantalla? Lic. Nancy Michelle Torres Villanueva 37
  136. 136. Buscar si un elemento existe enPROGRAMACIÓN PARA INTERNET el arreglo $a = array (’a’ => NULL, ’b’ => 2); echo in_array (2, $a); ● Qué aparece en pantalla? ● Se puede pasar un tercer parámetro para obligar el tipo de dato. Lic. Nancy Michelle Torres Villanueva 38
  137. 137. Obtener la posición de unPROGRAMACIÓN PARA INTERNET elemento en el arreglo ● array_search() funciona igual que in_array() solo que este devolverá la llave. Si el valor no fue encontrado devuelve false. ● Tiene un tercer parámetro opcional para obligar la concordancia del tipo de dato $a = array (’a’ => NULL, ’b’ => 2); echo array_search (2, $a); ● Qué aparece en pantalla? Lic. Nancy Michelle Torres Villanueva 39
  138. 138. Un arreglo con las llavesPROGRAMACIÓN PARA INTERNET ● Con array_keys() se obtiene un arreglo con las llaves de otro arreglo. ● Se pueden poner parámetros opcionales y entonces solo devolverá las llaves de los elementos indicados en los parámetros. Lic. Nancy Michelle Torres Villanueva 40
  139. 139. $mascotas = array( "Juan"=>"Perro",PROGRAMACIÓN PARA INTERNET "Ana"=>"Conejo", "Pedro"=>"Gato", "Maria"=>"Hamster", "Luis"=>"Perro", "Paco"=>"Gato"); $llaves = array_keys($mascotas); ("Juan”, “Ana”, “Pedro”, “Maria”, “Luis”, “Paco") $llaves = array_keys($mascotas,”Perro”); ("Juan”, “Luis") Lic. Nancy Michelle Torres Villanueva 41
  140. 140. Un arreglo sin llavesPROGRAMACIÓN PARA INTERNET ● La función array_values() genera un nuevo arreglo solamente con los valores y olvida las llaves Lic. Nancy Michelle Torres Villanueva 42
  141. 141. Eliminación de elementosPROGRAMACIÓN PARA INTERNET ● Un elemento puede ser eliminado de un arreglo, o un arreglo completo se puede eliminar llamando a unset ( ). ● Sin embargo, la eliminación de un elemento no reasigna indices. Lic. Nancy Michelle Torres Villanueva 43
  142. 142. PROGRAMACIÓN PARA INTERNET $favoritos = array("PHP", "Ace", "COBOL", "Java", "C++"); ● Eliminar COBOL del arreglo unset($favoritos[2]); Lic. Nancy Michelle Torres Villanueva 44
  143. 143. Eliminando elementos repetidosPROGRAMACIÓN PARA INTERNET ● La función array_unique() devuelve un arreglo sin items repetidos. ● Si el arreglo tiene llaves, se quedará con la primer llave, y las siguientes ocasiones en que se repita, serán omitidas. Lic. Nancy Michelle Torres Villanueva 45
  144. 144. Un arreglo rellenadoPROGRAMACIÓN PARA INTERNET ● La función array_fill() crea un arreglo rellenado con el dato indicado. ● Se debe indicar la primer llave, la cantidad de repeticiones y el dato a repetir. $unidad = array_fill(2, 5, "uno"); Array ( [2] => uno [3] => uno [4] => uno [5] => uno [6] => uno ) Lic. Nancy Michelle Torres Villanueva 46
  145. 145. Arreglo con una seriePROGRAMACIÓN PARA INTERNET ● La función range() crea un arreglo con una serie dentro. ● Se debe indicar el primer valor y el último valor. Puede indicarse como parámetro opcional el tipo de incremento $letras = range("a", "z", 5); Array ( [0] => a [1] => f [2] => k [3] => p [4] => u [5] => z ) Lic. Nancy Michelle Torres Villanueva 47
  146. 146. Invertir un llaves por valoresPROGRAMACIÓN PARA INTERNET ● La función array_flip() invierte las llaves por los valores en un arreglo. $a = array (’a’, ’b’, ’c’); array_flip ($a); ["a"]=> 0 , ["b"]=> 1 , ["c"]=> 2) Lic. Nancy Michelle Torres Villanueva 48
  147. 147. Invertir el orden de un arregloPROGRAMACIÓN PARA INTERNET ● La función array_reverse() invierte el orden de los elementos de un arreglo. $cont = array("cero", "uno", "dos", "tres", "cuatro"); $inverso = array_reverse($cont); Array ( [4] => cuatro [3] => tres [2] => dos [1] => uno [0] => cero ) Lic. Nancy Michelle Torres Villanueva 49
  148. 148. Convertir un arreglo en unaPROGRAMACIÓN PARA INTERNET cadena ● La función implode() regresa una cadena creada por la union de cada uno de los elementos en el arreglo, insertando una cadena de unión entre cada elemento. ● join() es un alias de implode() y funciona exactamente igual $animales = array("canguro", "leon", "jirafa”); implode(", ", $animales); Lic. Nancy Michelle Torres Villanueva 50
  149. 149. Convertir una cadena en unPROGRAMACIÓN PARA INTERNET arreglo ● La función explode() regresa un arreglo de cadenas creadas por la ruptura de una cierta cadena en cada ocurrencia despues de un separador dado $palabras = explode(" ", "Ahora es el momento"); print_r($palabras); Array ( [0] => Ahora [1] => es [2] => el [3] => momento ) Lic. Nancy Michelle Torres Villanueva 51
  150. 150. Iteraciones en un arregloPROGRAMACIÓN PARA INTERNET ● Existen varias funciones para poder trabajar co las iteraciones dentro de un arreglo ● reset() Reinicia el puntero del arreglo para poder recorrerlo. ● prev() Recorre el puntero a la posición anterior ● next() Recorre el puntero a la siguiente posición ● current() Entrega el valor guardado en la posición actual ● key() Devuelve la llave de la posición actual ● end() Mueve el puntero a la posición final Lic. Nancy Michelle Torres Villanueva 52
  151. 151. $array = array(’foo’ => ’bar’, ’baz’, ’bat’ => 2);PROGRAMACIÓN PARA INTERNET function displayArray($array) { reset($array); while (key($array) !== null) { echo key($array).": ".current($array); next($array); } } Lic. Nancy Michelle Torres Villanueva 53
  152. 152. foreach()PROGRAMACIÓN PARA INTERNET ● Es una manera sencilla de recorrer una arreglo. $array = array(’foo’, ’bar’, ’baz’); foreach ($array as $key => $value) { echo "$key: $value"; } Lic. Nancy Michelle Torres Villanueva 54
  153. 153. Iteraciones con funcionesPROGRAMACIÓN PARA INTERNET ● array_walk() Aplica una función definida por el usuario a cada miembro de un arreglo. ● array_walk_recursive() Aplica una función definida por el usuario recursivamente a cada miembro de un arreglo. Lic. Nancy Michelle Torres Villanueva 55
  154. 154. $frutas = array("d" => "limon", "a" => "naranja", "b" => "platano", "c" => "manzana");PROGRAMACIÓN PARA INTERNET function test_print($valor, $llave) { echo "$llave. $valor<br />n"; } array_walk($frutas, test_print); Lic. Nancy Michelle Torres Villanueva 56
  155. 155. $frutas = array("d" => "limon", "a" => "naranja", "b" => "platano", "c" => "manzana");PROGRAMACIÓN PARA INTERNET function test_alter(&$valor, $llave, $prefix) { $valor = "$prefix: $valor"; } array_walk($frutas, test_print,Fruta: ); Lic. Nancy Michelle Torres Villanueva 57
  156. 156. $dulce = array(a => manzana, b => platano);PROGRAMACIÓN PARA INTERNET $frutas = array(dulce => $dulce, acido => limon); function test_print($valor, $llave) { echo "$llave tiene $valorn"; } array_walk_recursive($frutas, test_print); Lic. Nancy Michelle Torres Villanueva 58
  157. 157. Ordenar un arregloPROGRAMACIÓN PARA INTERNET ● Los elementos de un arreglo se ordenan ascedente o descendentemente, sin embargo, las llaves se perderan en el proceso. ● sort() Ascendentemente ● rsort() Descendentemente ● Se tiene un segundo parámetro opcional para indicar si el ordenamiento será alfabético o numérico Lic. Nancy Michelle Torres Villanueva 59
  158. 158. Banderas de ordenamientoPROGRAMACIÓN PARA INTERNET ● SORT_REGULAR – Compara items normalmente (No cambia los tipos) ● SORT_NUMERIC – Compara items numéricamente ● SORT_STRING – Compara items como cadenas ● SORT_LOCALE_STRING – Compara items como cadenas basado en la configuración local Lic. Nancy Michelle Torres Villanueva 60
  159. 159. PROGRAMACIÓN PARA INTERNET $numbers = array(24, 19, 3, 16, 56, 8, 171); sort($numbers); ● ( [0] => 3, [1] => 8, [2] => 16, [3] => 19, [4] => 24, [5] => 56, [6] => 171 ) rsort($numbers); ● ( [0] => 171, [1] => 56, [2] => 24, [3] => 19, [4] => 16, [5] => 8, [6] => 3 ) Lic. Nancy Michelle Torres Villanueva 61
  160. 160. PROGRAMACIÓN PARA INTERNET $arr = array ("1", 10, "Maria", "maria", "Memo", 1, 5, 9); sort($arr); ● En que orden quedará este arreglo? Lic. Nancy Michelle Torres Villanueva 62
  161. 161. Ordenar un arreglo manteniendoPROGRAMACIÓN PARA INTERNET las llaves ● Para que al ordenar las llaves se mantengan, se utilizan las funciones: ● asort() Ascendentemente ● arsort() Descendentemente Lic. Nancy Michelle Torres Villanueva 63
  162. 162. Ordenar un arreglo por sus llavesPROGRAMACIÓN PARA INTERNET ● Hemos visto como ordenar un arreglo en base a sus elementos, pero también podemos ordenarlo en base a sus llaves. ● ksort() Ascendentemente ● krsort() Descendentemente Lic. Nancy Michelle Torres Villanueva 64
  163. 163. Ordenar un arreglo utilizando unaPROGRAMACIÓN PARA INTERNET función definida por el usuario ● Si deseas ordenar un arreglo de alguna otra manera que no sea numérica o alfabéticamente, puedes crear tu propia función y luego mandar a ordenar con esa función. ● usort( ) Ordena el arreglo basado en el valor de cada elemento aplicando una nueva llave ● uasort( ) Mantiene el par llave/valor ● uksort( ) Reordena los elementos basado en la llave de cada elemento Lic. Nancy Michelle Torres Villanueva 65
  164. 164. function cmp_length($a, $b) {PROGRAMACIÓN PARA INTERNET if (strlen($a) < strlen($b)) return -1; if (strlen($a) > strlen($b)) return 1; //Si el tamaño es igual return 0; } Lic. Nancy Michelle Torres Villanueva 66
  165. 165. PROGRAMACIÓN PARA INTERNET $animals = array("cow", "ox", "hippopotamus", "platypus"); usort($animals, "cmp_length"); ● ( [0] => ox, [1] => cow, [2] => platypus, [3] => hippopotamus ) Lic. Nancy Michelle Torres Villanueva 67
  166. 166. Desordenando un arregloPROGRAMACIÓN PARA INTERNET ● La función shuffle() desacomoda un arreglo de manera random. Las llaves se pierden Lic. Nancy Michelle Torres Villanueva 68
  167. 167. Obtener un elemento randomPROGRAMACIÓN PARA INTERNET ● La función array_rand() toma uno o mas elementos random del arreglo y devuelve la llave de estos. Lic. Nancy Michelle Torres Villanueva 69
  168. 168. Arreglos como pilas y colasPROGRAMACIÓN PARA INTERNET ● PHP ofrece funciones para las actividades de push y pull en las pilas y para shift y unshift en las colas. ● array_push ● array_pop ● array_shift ● array_unshift Lic. Nancy Michelle Torres Villanueva 70
  169. 169. PROGRAMACIÓN PARA INTERNET $stack = array(); array_push($stack, ’bar’, ’baz’); $last_in = array_pop($stack); $queue = array(’qux’, ’bar’, ’baz’); $first_element = array_shift($queue); array_unshift($queue, ’foo’); Lic. Nancy Michelle Torres Villanueva 71

×