PHP5 matrices multidimensionales

De igual forma que PHP puede usar vectores o matrices de una sola dimensión, también puede usar matrices multidimensionales. Estas matrices se usan y manipulan exactamente igual que las otras.
Antes de manipular matrices vamos a comenzar a utilizar la función gettype($vector) que nos devolverá el tipo de variable que estamos usando, si usamos un vector nos devolverá “array”. Veamos el ejemplo:

<?php
$v = array(54,76,89,23,12);
echo gettype($v);
?>

Ejercicio

  • Averigua que nos devolvería gettype() para un entero y para una cadena de caracters

Crear una matriz multidimensional

Para crear una matriz multidimensional usaremos el constructor array(), pasando vectores creados con array() en cada uno de sus elementos.

<?php
//Ejemplo de matriz multidimensional que nos crea una agenda
$agenda = array(array('Nombre'    => 'Santiago',
                      'Direccion' => 'Ctra. Valencia Km.7',
                      'Telefono'  => 994541145,
                      'email'     => 'santiago@correo.mio'),
                array('Nombre'    => 'Agustín',
                      'Direccion' => 'Ctra. Valencia Km.7',
                      'Telefono'  => 994541145,
                      'email'     => 'agustin@correo.mio'),
                array('Nombre'    => 'Javier',
                      'Direccion' => 'Ctra. Valencia Km.7',
                      'Telefono'  => 993344114,
                      'email'     => 'javier@correo.mio'));

?>

Ejemplo de uso de la agenda

  1. La agenda tendrá una función listar que muestra toda la agenda en una tabla HTML
  2. La agenda tendrá una función mostrar que busca una persona y la muestra si existe en la agenda
  3. También tendremos la función borrar que busca una persona y la borra si existe en la agenda

Ejemplo resuelto

<?php
//Ejemplo de matriz multidimensional que nos crea una agenda
$agenda = array(array('nombre'    => 'Santiago',
                      'direccion' => 'Ctra. Valencia Km.7',
                      'telefono'  => 994541145,
                      'email'     => 'santiago@correo.mio'),
                array('nombre'    => 'Agustín',
                      'direccion' => 'Ctra. Valencia Km.7',
                      'telefono'  => 994541145,
                      'email'     => 'agustin@correo.mio'),
                array('nombre'    => 'Javier',
                      'direccion' => 'Ctra. Valencia Km.7',
                      'telefono'  => 993344114,
                      'email'     => 'javier@correo.mio'));

/* función que pinta una cabecera para la tabla de la agenda, no recibe parámetros*/
function pintar_cabecera()
{
?>
<table align="center" border="1"  width="750px">
<thead>
	<tr>
	<th>Nombre</th>
	<th>Dirección</th>
	<th>Teléfono</th>
	<th>Correo</th>
	</tr>
</thead>
<tbody>
<?php 
}

/* función que pinta el fin dela tabla para la agenda, no recibe parámetros*/
function pintar_fin_tabla()
	{
	echo "</tbody></table>";
	}
	
/*Función que muestra una persona individual como una línea de la tabla, recibe un vector tipo persona*/
function mostrar_persona($persona)
{
	echo "<tr><td>".$persona['nombre']."</td><td>".$persona['direccion']."</td><td>".$persona['telefono']."</td><td>".$persona['email']."</td></tr>";
}

/*Función que muestra toda la tabla, recibe un vector tipo agenda y llama a mostrar persona por cada elemento*/
function mostrar ($agenda)
{
	pintar_cabecera();
	foreach ($agenda as $persona)
		{
		mostrar_persona($persona);
		}
	pintar_fin_tabla();
}

/*Función que busca una persona en la agenda, si la encuetra la muestra por pantalla
Recibe un vector tipo agenda y un nombre*/
function buscar($agenda,$nombre)
{
echo "<p>Resultado para la busqueda de $nombre</p>";
pintar_cabecera();
	foreach ($agenda as $persona)
		if ($persona['nombre']==$nombre)
			mostrar_persona($persona);
pintar_fin_tabla();
}

/*Función que borra una persona de la agenda, si la encuetra la muestra por pantalla
Recibe un vector tipo agenda y un nombre, retorna la agenda borrada*/
function borrar($agenda,$nombre)
{
	echo "<p>Resultado para el borrado de $nombre</p>";
	for ($i=0;$i<count($agenda);$i++)
			if ($agenda[$i]['nombre']==$nombre)
				unset($agenda[$i]);
	return $agenda;
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<title>Gestor de agenda</title>
<meta charset="UTF-8">
<meta name="description" content="Gestionar una agenda de contactos con PHP">
<meta name="keywords" content="contactos, agenda, php"/>
<meta name="author" content="Juan Luis Mora Blanco" />
<meta name="robots" content="index,follow,noarchive">
</head>
<body>
<?php
mostrar($agenda);
buscar($agenda,"Javier");
$agenda=borrar($agenda,"Javier");
mostrar($agenda);
?>
</body>
</html>

Modificaciones para el ejemplo

  1. Haz que también busque por los campos teléfono y email (Podrás hacer funciones distintas teléfono y buscar email, o puedes modificar la que tenemos añadiendo atributos por defecto para los campos vacíos)
  2. Haz lo mismo para que borre por el campo teléfono o por el campo email
  3. No olvides probar todos los ejercicios

Originally posted 2011-02-20 20:02:34.

Deja un comentario