Trabajo con tablas o arrays en PHP

Valoración del artículo:
Vemos algunas de las funciones típicas del trabajo con arrays a través de una pequeña explicación y un ejemplo de uso.
Publicado: 09/10/03
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Vamos a ver varios ejemplos de trabajo con arrays (arreglos, vectores, matrices o tablas en castellano) en PHP que ilustrarán un poco el funcionamiento de algunas de las funciones de arrays más populares que trae consigo PHP.

Sin más, vamos a introducirnos en materia con varios ejemplos interesantes de manejo de vectores.

Referencia: Los arrays en PHP se explican en el artículo Tablas o Arrays en PHP.

Modificar el número de elementos de un array

Ahora vamos a ver varios ejemplos mediante los cuales nuestros arrays pueden aumentar o reducir el número de casillas disponibles.

Reducir el tamaño de un array

array_slice()
Para disminuir el número de casillas de un arreglo tenemos varias funciones. Entre ellas, array_slice() la utilizamos cuando queremos recortar algunas casillas del arreglo, sabiendo los índices de las casillas que deseamos conservar.

Recibe tres parámetros. El array, el índice del primer elemento y el número de elementos a tomar, siendo este último parámetro opcional.

En el ejemplo siguiente tenemos un array con cuatro nombres propios. En la primera ejecución de array_slice() estamos indicando que deseamos tomar todos los elementos desde el índice 0 (el principio) hasta un número total de 3 elementos.

El segundo array_slice() indica que se tomen todos los elementos a partir del índice 1 (segunda casilla).

<?
$entrada = array ("Miguel", "Pepe", "Juan", "Julio", "Pablo");

//modifico el tamaño
$salida = array_slice ($entrada, 0, 3);
//muestro el array
foreach ($salida as $actual)
    echo $actual . "<br>";

echo "<p>";

//modifico otra vez
$salida = array_slice ($salida, 1);
//muestro el array
foreach ($salida as $actual)
    echo $actual . "<br>";
?>


Tendrá como salida:

Miguel
Pepe
Juan

Pepe
Juan

array_shift()
Esta función extrae el el primer elemento del array y lo devuelve. Además, acorta la longitud del array eliminando el elemento que estaba en la primera casilla. Siempre hace lo mismo, por tanto, no recibirá más que el array al que se desea eliminar la primera posición.

En el código siguiente se tiene el mismo vector con nombres propios y se ejecuta dos veces la función array_shift() eliminando un elemento en cada ocasión. Se imprimen los valores que devuelve la función y los elementos del array resultante de eliminar la primera casilla.

<?
$entrada = array ("Miguel", "Pepe", "Juan", "Julio", "Pablo");

//quito la primera casilla
$salida = array_shift ($entrada);
//muestro el array
echo "La función devuelve: " . $salida . "<br>";
foreach ($entrada as $actual)
    echo $actual . "<br>";

echo "<p>";

//quito la primera casilla, que ahora sería la segunda del array original
$salida = array_shift ($entrada);
echo "La función devuelve: " . $salida . "<br>";
//muestro el array
foreach ($entrada as $actual)
    echo $actual . "<br>";
?>


Da como resultado:

La función devuelve: Miguel
Pepe
Juan
Julio
Pablo

La función devuelve: Pepe
Juan
Julio
Pablo

unset()
Se utiliza para destruir una variable dada. En el caso de los arreglos, se puede utilizar para eliminar una casilla de un array asociativo (los que no tienen índices numéricos sino que su índice es una cadena de caracteres).

Veamos el siguiente código para conocer cómo definir un array asociativo y eliminar luego una de sus casillas.

<?
$estadios_futbol = array("Barcelona"=> "Nou Camp","Real Madrid" => "Santiago Bernabeu","Valencia" => "Mestalla","Real Sociedad" => "Anoeta");

//mostramos los estadios
foreach ($estadios_futbol as $indice=>$actual)
    echo $indice . " -- " . $actual . "<br>";

echo "<p>";

//eliminamos el estadio asociado al real madrid
unset ($estadios_futbol["Real Madrid"]);

//mostramos los estadios otra vez
foreach ($estadios_futbol as $indice=>$actual)
echo $indice . " -- " . $actual . "<br>";
?>


La salida será la siguiente:

Barcelona -- Nou Camp
Real Madrid -- Santiago Bernabeu
Valencia -- Mestalla
Real Sociedad -- Anoeta

Barcelona -- Nou Camp
Valencia -- Mestalla
Real Sociedad -- Anoeta

Aumentar el tamaño de un array

Tenemos también a nuestra disposición varias funciones que nos pueden ayudar a aumentar el número de casillas de un arreglo.

array_push()
Inserta al final del array una serie de casillas que se le indiquen por parámetro. Por tanto, el número de casillas del array aumentará en tantos elementos como se hayan indicado en el parámetro de la función. Devuelve el número de casillas del array resultante.

Veamos este código donde se crea un arreglo y se añaden luego tres nuevos valores.

<?
$tabla = array ("Lagartija", "Araña", "Perro", "Gato", "Ratón");

//aumentamos el tamaño del array
array_push($tabla, "Gorrión", "Paloma", "Oso");

foreach ($tabla as $actual)
    echo $actual . "<br>";
?>


Da como resultado esta salida:

Lagartija
Araña
Perro
Gato
Ratón
Gorrión
Paloma
Oso

array_merge()
Ahora vamos a ver cómo unir dos arrays utilizando la función array_merge(). A ésta se le pasan dos o más arrays por parámetro y devuelve un arreglo con todos los campos de los vectores pasados.

En este código de ejemplo creamos tres arrays y luego los unimos con la función array_merge()

<?
$tabla = array ("Lagartija", "Araña", "Perro", "Gato", "Ratón");
$tabla2 = array ("12","34","45","52","12");
$tabla3 = array ("Sauce","Pino","Naranjo","Chopo","Perro","34");

//aumentamos el tamaño del array
$resultado = array_merge($tabla, $tabla2, $tabla3);

foreach ($resultado as $actual)
    echo $actual . "<br>";
?>


Da como resultado:

Lagartija
Araña
Perro
Gato
Ratón
12
34
45
52
12
Sauce
Pino
Naranjo
Chopo
Perro
34

Una última cosa. También pueden introducirse nuevas casillas en un arreglo por los métodos habituales de asignar las nuevas posiciones en el array a las casillas que necesitemos.

En arrays normales se haría así:

$tabla = array ("Sauce","Pino","Naranjo");
$tabla[3]="Algarrobo";


En arrays asociativos:

$estadios_futbol = array("Valencia" => "Mestalla","Real Sociedad" => "Anoeta");
$estadios_futbol["Barcelona"]= "Nou Camp";


Veremos más adelante otras posibilidades del trabajo con arrays.

Ponemos a vuestra disposición las páginas PHP que contienen los códigos con los que hemos trabajado.

Referencia: en el taller de PHP tenemos artículos sobre el trabajo con arrays en PHP. Concretamente tenemos uno que explica los distintos tipos de ordenación de arrays en PHP: Ordenar arrays con PHP

Comentarios
Fueron enviados 7 comentarios al artículo
7 comentarios revisados:
Por: Jorge
29/5/04
Hola! He intentado sumar dos arrays con el método array_merge(), pero los que son iguales se repiten. Entonces, me puse a investigar como se podria sumar dos arrays y en el caso de ser iguales, poder sumar sus valores. El código que he creado es así:
<?
$tabla = array ("Tomates" => "3", "Patatas" => "8", "Harina" => "100", "Truchas" => "13", "Agua" => "8");
$tabla2 = array ("Perjil" => "12","Tomates" => "34","Sardinas" => "45");
//aumentamos el tamaño del array
$result = array_merge ($tabla, $tabla2);
foreach($tabla as $k => $v){
if (array_key_exists($k, $tabla2)) {
foreach($tabla as $k2 => $v2)
{
if ($k == $k2){
$v = $v + $v2;
echo 'Ingrediente:<br> '.$k.' ud: '.$v. ' <br>';
echo 'Ingrediente:<br> '.$k2.' ud: '.$v2. ' <br>';
}
}
}else{
foreach($result as $k3 => $v3){
echo 'Ingrediente:<br> '.$k3.' ud: '.$v3. ' <br>';
}
}

en este codigo intento sumar $tabla y $tabla2. Si existe algún ingrediente (en este caso, tomates) se suman las cantidades. Por lo visto da un error algo debo haber hecho mal, si alguien puede decirme el qué, le estaría agradecido. aún asi espero que sirva de algo.
Por último felicitar a los creadores de esta web por lo mucho que he aprendido de ella.
Por: Dani
19/6/04
Disculpa mi ignorancia, pero es que me he leído casi todo en manual de PHP pero todavía no he descubierto donde debo insertar las secuencias (los códigos de PHP) para añadir campos, qitar elementos, es decir, modificar una tabla dentro de una base de datos.
¿cómo se enlaza ese código con la base de datos?

Espero que haya entendido mi duda. Gracias. Ch@o.
Por: Perceval
29/10/08
Me gusto el articulo, lo que si es que el ultimo ejemplo de modificaciones de registros asociativos, creo que tiene un error, Modifica sobre un campo no existente, dice ["Barcelona"], cuando nunca se creo en la definicion del array.
Por: Jp
06/12/08
Para Perceval:

Lo que hace en las últimas líneas es agregar un nuevo key y valor a un Array, es como "forzar" al array a agregar otro elemento.
Por: eli
07/12/08
si, es asi como dice Jp, se agrega un nuevo elemento al array con el indice "barcelona" (como si fuera la siguiente posicion del array), y el valor es "nou camp"...

...asi que el array fue creado inicialmente con 3 elementos, y de esa forma agregamos uno mas :)

Por: Carlitos
04/3/09
Para Jorge,
soy novato en PHP pero no en programación y creo que un error es tu segundo "foreach", el que está anidado dentro del primero, debería poner "tabla2" en lugar de "tabla" para poder hacer la comparación en la segunada tabla.
Saludos
Felisitaciones
09/10/09
Muy buen manual, en mi instituto no enseñan php solamente html, una verdadera lastima, por lo que ustedes han sido una salvacion, ya que se que php es muy importante. Me gustarian mas videotutoriales, son muy buenos los que estan, y es mas facil comprender todo.

Muchas Gracias

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Últimas noticias
Alojados en el grupo