1 Desarrollo Web en Entorno Servidor Arrays escalares y asociativos (Unidimensionales) Arrays y funciones. Arrays y funciones Arrays bidimensionales. Arrays.

  • Published on
    25-Jan-2016

  • View
    212

  • Download
    0

Transcript

  • *Desarrollo Web en Entorno Servidor

    Arrays escalares y asociativos (Unidimensionales)Arrays y funciones.Arrays bidimensionales.Arrays multidimensionales.La funcin array().Recorrido de un array. Uso de foreach.Obtener informacin sobre variables y arrays.Ordenacin de ArraysModificacin de Arrays

    Tema 5: Arrays.

  • *Arrays Unidimensionales.

    Qu es un array?

    Un array es sencillamente una tabla de valores. Cada uno de los elementos de esa tabla se identifica por medio de un nombre (comn para todos) y un ndice (que diferenciara a cada uno de ellos). La sintaxis que permite definir elementos en un array es esta:

    $nombre[indice]

  • *Arrays Unidimensionales.

    Arrays escalares.Los ndices de un array son nmeros.

    $a[]=valor $a[xx]=valor Arrays Asociativos.Los indices de un array son cadenas.

    $a['indice']=valor

  • *Arrays Unidimensionales.Tanto en este supuesto como en el anterior, es posible y bastante frecuente utilizar como ndice el contenido de una variable. El modo de hacerlo sera:$a[$ind]=valor

    En este caso, sea cual fuere el valor de la variable $ind, el nombre de la variable nunca se pone entre comillas.

  • *Arrays Unidimensionales.Ejemplo.

  • *Arrays Unidimensionales.Ejemplo.

  • *Arrays y Funciones.Es posible que la funcin genere un array y que este sea devuelto a una variable que se convertira a ese tipo de forma automtica.

    Otra opcin de recoger los valores devueltos por return es invocar la funcin mediante una llamada del tipo: list(v1, v2,..)=llamada Las variables v1, v2, etc. recogern los valores de los elementos del array devuelto por la funcin.

  • *Ejemplos

  • *Arrays Bidimensionales.Los arrays bidimensionales pueden entenderse como algo muy similar a una tabla de doble entrada. Cada uno de los elementos se identifica sigue siendo vlido el nombre nico que se usaba en los unidimensionales por un nombre ($nombre) seguido de dos ([]) que contienen los ndices (en este caso son dos ndices) del array. Los ndices pueden ser de tipo escalar -equivalen al nmero de fila y columna que la celda ocupa en la tabla o puede ser asociativos lo que equivaldra en alguna medida a usar como ndices los nombres de la fila y de la columna.

  • *Arrays Bidimensionales.Arrays bidimensionales escalares.Los elementos de un array bidimensional escalar pueden escribirse usando una de estas sintaxis: $a[][]=valor $a[xx][]=valor $a[][xx]=valor

    $a[xx][yy]=valor

  • *Arrays Bidimensionales.Arrays bidimensionales asociativos.

    Los elementos de un array bidimensional asociativo se pueden escribir usando la siguiente sintaxis: $a["indice1"]["indice2"]=valor

  • *Arrays bidimensionales.Ejemplo.Ejercicio. Intenta modificar el script y trata de reproducir estas tablas

  • *Arrays Multidimensionales.PHP permite el uso de arrays con dimensin superior a dos. Para modificar la dimensin del array basta con ir aadiendo nuevos ndices. $a[x][y][z]=valor; Pueden tener cualquier tipo de ndices: escalares, asociativos.

  • *La funcin array()Para asignar valores a una matriz puede usarse la funcin array(), que tiene la siguiente sintaxis: $a= array ( ndice 0 => valor, ..... , ndice n => valor, );Por ejemplo: $z=array ( 0 => 2, 1 => "Pepe", 2 => 34.7, 3 => "34Ambrosio", );producir igual resultado que: $z[0]=2; $z[1]="Pepe"; $z[2]=34.7; $z[3]="34Ambrosio";

  • *Anidando en array()La funcin array() permite escribir arrays de cualquier dimensin utilizando la tcnica de anidado.Si pretendemos escribir los elementos de este array: $z[0][0]=34; $z[0][1]=35; $z[0][2]=36; $z[1][0]=134; $z[1][1]=135; $z[1][2]=136; podriamos hacerlo asi: $z=array( 0 => array ( 0 => 34, 1 => 35, 2 => 36, ), 1 => array ( 0 => 134, 1 => 135, 2 => 136, ));

  • *Anidando en array(). Arrays asociativosAunque en el ejemplo anterior nos hemos referido a un array escalar, un procedimiento intico sera vlido para arrays asociativos con slo cambiar los nmeros por cadenas escritas entre comillas.Este podra ser un ejemplo de array asociativo:$z["a"]["A"]=34;$z["a"]["B"]=35;$z["a"]["C"]=36;$z["b"]["A"]=134;$z["b"]["B"]=135;$z["b"]["C"]=136;que podra definirse tambin de esta forma: $z=array( "a" => array ( "A" => 34, "B" => 35, "C" => 36, ), "b" => array ( "A" => 134, "B" => 135, "C" => 136, ));

  • *Ejemplo. Array asociativo multidimesional

  • *Recorrido de Arrays.Ejemplo de Recorrido de Array unidimensional (llamado Tabla) de tamao 100.

    $contador = 0;While ($contador < 100){echo $tabla[$contador];$contador++;}

  • *Recorrido de Arrays.Ejemplo de Recorrido de Array bidimensional (llamado Tabla) de 100 filas y 40 columnas.

    $contador1 = 0;While ($contador1 < 100){$Contador2=0;While ($contador2 < 40){echo $tabla[$contador1][$contador2];$contador2++;}$contador1++;}

  • *Recorrido de Arrays con Foreach.El bucle foreachEl bucle foreach es especfico de los array y aplicable a ellos tanto si son escalares como si son de tipo asociativo. Tiene dos posibles opciones. En una de ellas lee nicamente los valores contenidos en cada elemento del array. En el otro caso lee adems los ndices del array.Lectura de valoresforeach( array as var ){ ...instrucciones... }

    Lectura de ndices y valores. foreach( array as v1 => v2 ) { ...instrucciones... }

  • *Ejemplos con Foreach.

  • *Ejemplos con Foreach.

  • *Ejemplos con Foreach.

    -- En este ejemplo es necesario usar implode para evitar el error Array to string conversion

  • *Obtener informacin sobre variables y arrays.

    sizeof(variable) count(variable) Tiene idntica funcionalidad a la de sizeof. La funcin sizeof devuelve el nmero de elementos de un array. Si se aplica sobre una variable (no array) devolver uno y tanto si se aplica sobre un array vaco, una variable con valor nulo o sobre una variable no definida, devolver cero. isset(variable) La funcin isset comprueba si una variable est definida o no lo est. Si lo est incluso con valor nulo o como array vaco isset devolver UNO, en caso contrario devolver NUL. Esta funcin puede ser un complemento de sizeof o de count dado que permitira comprobar si estn definidas las variables en las que aquellas funciones devuelven dimensin cero.

  • *Obtener informacin sobre variables y arrays (II)

    is_array(variable) Devuelve UNO (verdadero) en el caso de que la variable sea tipo array y NUL en el caso contrario.is_long(variable) o is_int(variable) o is_integer(variable) Estas tres funciones que son idnticas devuelven UNO en el caso de que la variable sea de tipo entero y NUL en el caso contrario.is_float(variable) is_double(variable) Estas dos funciones tambin idnticas devuelven UNO en el caso de que la variable sea de tipo coma flotante y NUL en el caso contrario. is_string(variable) Devuelve UNO en el caso de que la variable sea tipo string y NUL en caso contrario. unset(variable)Destruye la variable indicada. Si despus de aplicar unset sobre una variable aplicamos de nuevo la funcin isset, nos devolver NUL indicando que ya no est definida. La funcin unset se puede aplicar tanto sobre variables como sobre un array y tambin sobre un elemento de un array.

  • *Recuentos y bsquedas en arrays

    $n=array_count_values(ar) Con array_count_values la variable $n ser un array que tendr como ndices cada uno de los valores distintos que contenga el array ar, y como valores el resultado de contar el nmero de veces que se repite cada uno de los valores contenidos en el array inicial. Distingue entre maysculas y minsculas. Cuando el array inicial (ar) contiene nmeros enteros (sea ar escalar o asociativo) $n ser un array escalar. En caso contrario, ser asociativo. $clav=array_keys(arr) Devuelve un array escalar (clav) que contiene como valores los ndices del array inicial (arr).$clav=array_keys(arr, valor) Devuelve un array escalar (clav) que contiene como valores los ndices de los elementos del array inicial cuyo valor coincide con el indicado mediante el parmetro valor. $valores=array_values(arr)Esta funcin recoge en una nueva matriz (valores) todos los valores contenidos en otro array. Es una forma de conversin de un array asociativo en otro escalar.

    $variable=array_search(valor,arr)Busca un valor determinado en un array y devuelve la clave correspondiente en caso de xito . Si aparece ms de una vez es necesario usar array_keys() con el parmetro opcional search_value.

  • *Localizacin de valores y posicionamientos en arrays Cuidado!. Fjate en el ejemplo. Pese a que hemos pedido a PHP que nos muestre, mediante la instruccin echo $a[3], esa lectura no mueve el puntero interno, que sigue sealando a la primera posicin (devuelve CERO).)

    in_array(valor,array) La funcin in_array busca en la matriz (array) el valor (numrico o cadena) contenido en el parmetro valor. Si lo encuentra devuelve 1, y, si no existiera devolvera NUL. Posicionamientos en una matrizMediante estas funciones se puede modificar la posicin del puntero interno de una matriz y determinar los ndices de los elementos a los que apunta en cada momento. key(array) Devuelve el ndice del elemento de la matriz al que apunta en ese momento el puntero interno de la matriz. reset(array) Desplaza el puntero interno a la posicin del primer ndice del array. end(array) Desplaza el puntero interno a la posicin del ltimo ndice del array. pos(array) Mantiene el puntero interno en la posicin del actual. next(array) Avanza el puntero interno en una posicin respecto a la actual. prev(array) Retrocede el puntero interno en una posicin respecto a la actual.

  • *Ordenacin de arrays.sort(array): Ordena los valores del array en sentido creciente y lo reindexa asignando ndice CERO al menor de los valores.rsort(array): Ordena la matriz en sentido decreciente de sus valores y la reindexa asignando ndice CERO al mayor de estos. Ordenacin por valores manteniendo ndicesasort(array): Ordena la matriz segn sus valores en sentido creciente y mantiene los ndices del array original.arsort(array): Ordena la matriz por valores en sentido decreciente y sigue manteniendo los ndices originales.

  • *Modificacin Arrays.

    var= range(inf,sup): Crea una nueva matriz (var) escalar en la que los valores de los elementos sern los nmeros enteros (ordenados) pertenecientes al intervalo comprendido entre los valores inf y sup, incluidos estos. Los valores inf y sup deben ser nmeros enteros.

    shuffle(array): Intercambia de modo aleatorio los valores de un array y los reindexa. Igual que ocurra en caso de los nmeros aleatorios, la funcin shuffle deber ir precedida de una semilla del tipo srand.

    var= array_flip(array): Devuelve un array (var) que contiene como valores los ndices de la matriz array y como ndices los valores de aquella. Como quiera que los valores pueden estar repetidos y no es posible que lo estn los ndices, esta funcin, en caso de valores repetidos, toma cada uno de esos valores una sola vez, lo utiliza como ndice del nuevo array y asigna como valor del nuevo elemento el mayor de los ndices del array original de los elementos que contuvieran ese valor.

    $inv=array_reverse($C): Invierte los elementos de una matriz.

  • *Modificacin Arrays.Insertando elementos en un arrays

    array_unshift(arr, v1,v2,..): Inserta al principio de la matriz arr los valores v1, v2, etctera que pueden ser tantos como se deseen y deben estar separados por comas.

    array_push(array, v1,v2,..): Inserta al final de la matriz array los valores v1, v2, etctera, que igual que en el caso anterior, pueden ser tantos como se deseen y deben estar separados por comas. Tanto array_unshift como array_push asignan a los nuevos elementos ndices numricos.

    array_pad(array, n, var): Inserta nuevos elementos en array y les asigna el valor contenido en var. Insertar tantos nuevos elementos como sea necesario para que el array alcance una longitud de n elementos.Si el valor de n es positivo inserta los elementos al final del array.Si fuera negativo los insertara al comienzo del mismo. A los nuevos elementos del array se les asignan ndices numricos.

    array_merge($a, $b): Crea un nuevo array escalar en el que se incluyen todos los elementos contenidos en los arrays $a y $b.

  • *Modificacin Arrays.Quitar elementos de un array

    array_shift($a): La funcin array_shift extrae el primer elemento del array $a.

    array_pop($a): La funcin array_pop extrae el ltimo elemento del array $a.

    array_slice($a,n): La funcin array_slice extrae n elementos del array $a. Si el valor de n es positivo extraer todos los elementos a partir del que ocupa la posicin n contando desde primero hasta el ltimo segn el orden de creacin de los elementos. Si el valor de n es negativo extraer todos los elementos a partir del ensimo, esta vez, contando desde el ltimo hasta el primero.

    array_slice($a,n, m): La funcin array_slice con dos parmetros permite extraer una parte de los valores de una matriz.

  • *FIN

    *