sábado, 12 de abril de 2008

Introducción a los Arreglos en PHP 5.0.


Lección 1

En este blog vamos a profundizar en el empleo de los arreglos. La necesidad de su aprendizaje se basa en que una gran parte de las funciones que incorpora el lenguaje PHP 5.0 manejan este tipo de dato.

Los arreglos permiten almacenar conjuntos de datos relacionados, lo que las convierte en piezas fundamentales a la hora de desarrollar los Scripts. Además, PHP proporciona una implementación muy flexible, potente y versátil de esta estructura de datos, permitiendo trabajar con la misma como si tratase de una matriz escalar, una matriz asociativa, una lista de elementos, una pila, una cola, según interese en cada momento.


El Conocimiento de las operaciones que se pueden realizar sobre los arreglos pueden permitir al programador de scripts PHP ahorrar bastantes horas de trabajo.


Definición

En muchos ocasiones, cuando se escribe un script PHP, aparece un conjunto de variables que contienen información semejante que ha de procesarse de forma similar; por ejemplo, los nombre de nuestros cuatro mejores amigos o las medias de las temperaturas de los meses de verano de los diez últimos años. En estos casos, existe una solución mejor que definir tantas variables como datos distintos tengamos: PHP dispone de una herramienta denominada Matriz o Arreglo.


Una Matriz contendrá una lista de valores que se encuentran agrupados bajo una misma denominación. Cada uno de estos valores tiene asociado un índice que permite acceder a los mismos de manera individual. En un principio, dependiendo de que tipo sea éste, vamos a distinguir entre matrices escalares cuyo índice siempre es un número entero y matrices asociativas donde el índice es una cadena de caracteres (string). Para indexar una matriz será necesario proporcionar el nombre de la misma seguido del valor del índice entre corchetes.

Matriz $Amigas
$Amigas[0]
$Amigas[1]
$Amigas[2]
$Amigas[3]
Indice
0
1
2
3
Valor
Alejandra
Victoria
Lizet
Maria

Creación e Inicialización de Matrices

PHP nos ofrece distintas posibilidades para crear e inicializar matrices. La forma más sencilla de hacerlo consiste en asociar el indice y el valor de cada elemento de la matriz por medio de una operación de asignación


//declaración explícita de matriz escalar

$numeros[0]= 'cero';

$numeros[1]= 'Julio';

$numeros[2]= '8';

// declaración explícita de martriz asociativa


$valores['julio'] = 'julio';

$valores['Agosto'] = '8';

Otra forma posible de crear e inicializar un arreglo consiste en indicar los valores de la matriz sin especificar el índice al que están asociados.

$numeros[] = 'cero' ;

$numeros[]='Julio';

$numeros[]= 8;

En este caso, a los elementos del arreglo se les asigna automáticamente los indices 0,1,2. Las reglas con las que PHP asigna indices automáticamente a los valores proporcionados son muy simples:

  • Si la matriz está vacía, el índice es 0.
  • Si la matriz tiene al menos un elemento, se busca entre los índices el número entero mayor y se asigna el inmediatamente superior como nuevo índice.
  • Si todos los índices numéricos son negativos, se asigna el valor 0

Por ejemplo, supongamos que tenemos un script PHP, con las siguientes intrucciones sobre una matriz:

$valores [-10]=10;

$valores [-20]=100;

$valores []='primero';

$valores []='segundo';

El índice que automáticamente se asignará al valor 'primero' va a ser 0, al valor 'segundo', se le asignara el indice 1, los indices de tipo cadena de caracteres no se tienen en cuenta.

Actividades

Participar en el foro del blog para exponer posibles dudas.

http://my-forum.org/foros.php?id=119550

Autoevaluación de la lección 1

http://www.geocities.com/irarob/blog/evaluando_leccion1.html

viernes, 11 de abril de 2008

Recorriendo el Arreglo


Lección 2

Recorrido de Arreglos con la Construcción foreach

La construcción foreach de PHP permite recorrer una matriz como si se tratase de una lista, procesando desde el primero al útlimo elemento de la misma. La sintaxis de esta construcción es:

foreach ($matriz as $indice => $valor)

{

Procesar el elemento cuyos indice y valor son $indice y $valor

}

Es decir que proporcionamos la matriz que queremos procesar junto con dos variables, donde PHP irá “colocando” el índice y valor correspondiente de cada uno de los elementos de la misma. En el caso en que no se desee recuperar el índice, desaparece la variable $indice junto con el operador => quedando la sintaxis de la construcción así:

foreach ($matriz as $valor)

{
Procesar el elemento cuyo valor es $valor
}

El siguiente script utiliza el bucle foreach
$matriz = array (“primavera”, “verano”, “otoño”, “invierno”);
// generamos las filas con un bucle foreach

foreach ($matriz as $indice => $valor)
echo "$indice, $valor, \n";

Lo que hace la construcción foreach es manejar el cursor interno que va accediendo a cada uno de los elementos de la matriz según el orden en que se hayan definido.

Recorrido utilizando la función array_walk()

La función array_walk() permite aplicar a una función, que ha sido definida por el usuario a cada uno de los elementos de una matriz. Para utilizar este recurso en PHP es necesario proporcionar dos parámetros: el primero será una variable de tipo matriz y el segundo el identificador de una función.

Por tanto, el siguiente código aplicará la función mifuncion() a todos los elementos de la matriz $matriz:

array_walk($matriz, ‘mifuncion’);

La función mifuncion() debe recibir dos parámetros que se corresponderán, respectivamente, con el valor y el índice de cada elemento de la matriz. Por ejemplo, podemos escribir una función que muestre estos dos parámetros de la siguiente manera:

funcion mifuncion($valor, $indice)
{
echo “INDICE = “, $indice, “VALOR ”, $valor, “ \n”;
}

Si se desea modificar los valores contenidos en la matriz , será necesario que en la función definida por el usuario se especifique que el parámetro donde se proporciona cada valor es pasador por referencia (con el operador & de prefijo). De esta manera el siguiente código:

funcion mifuncion(&$valor, $indice)
{
$valor = $valor + $valor * 0.01;
}

$matriz = array (10,20,30,40);

array_walk($Matriz, ‘modificar_elemento’);

va a provocar que se incremente el valor de todos los elementos de la matriz $matriz en un 1 por 100.

Para finalizar este apartado se debeindicar que PHP proporciona funciones especificas para sumar o multiplicar todos los valores de una matriz como son array_sum() y array_product(). También se dispone de la función array_reduce ($matriz, ‘mifuncion’) que opera todos los elementos de una matriz por medio del operador mifuncion() y devuelve el resultado obtenido.
Actividades a Realizar
Participar en el foro del blog para exponer posibles dudas.

Autoevaluación de la lección 2