You are on page 1of 5

Que es un array?

Un array (o matriz, como tambien son llamados) es un tipo de variable, con la singularidad de que no contiene un nico valor, sino un conjunto de valores referenciados con un ndice. Aunque al principio puedan parecer poco amistosos, su uso es utilisimo e imprescindible, y de hecho puedes encontrarlos en todos los lenguajes de programacin. La sintaxis es muy parecida a la usada con el resto de variables, con diferencias en la forma en que el array es creado y lgicamente, la forma en que su valor es recuperado (pues teniendo un valor mltiple, tenemos que indicar que valor, o en que forma, deseamos que nos sea devuelto).

Creando arrays
Hay dos formas de crear arrays, estatica o dinamicamente Podemos crear arrays de forma esttica usando la construccin php array() con la siguiente sintaxis:
Array array([index]=>[valor], [index2]=>[valor], ...);

teniendo en cuenta que podemos asignar manualmente el indice (mas tarde volveremos sobre esto) o dejar que php lo haga por nosotros. Supongamos por ejemplo que necesitamos almacenar nombres de ciudades. Podriamos usar variables simples ($ciudad1="madrid"; y asi sucesivamente), o podemos declarar un array:
<?php $mis_ciudades = array( 0=>"madrid", 1=>"barcelona", 2=>"zaragoza");

?>

obteniendo un array con una lista indexada de nuestras ciudades. Sabemos que el primer valor corresponde al ndice cero, el segundo al uno, y asi sucesivamente (por convencin, el primer valor de un array corresponde siempre -por defecto- al valor cero). A partir de ahora podemos recuperar cualquier valor especfico refiriendonos a su ndice. Por ejemplo para presentar el nombre de la segunda ciudad podriamos escribir simplemente
<?php echo $mis_ciudades[1]; ?>

como hariamos con cualquier otra variable. Y tambien podemos crear arrays dinmicamente, sencillamente agregando nuevos valores. Por ejemplo,
<?php $mis_ciudades[3] = "valencia"; ?>

agregandose el valor al array. Naturalmente por este mismo sistema tambien podemos modificar el valor de un array dado, e incluso aadir valores sin asignar indice, que ser agregado automticamente por php:
<?php $mis_ciudades[] = "zamora"; ?>

de tal forma que podemos acceder a este valor utilizando $mis_ciudades[4]

arrays asociativos
Como ya sabemos, un array sencillo esta formado por conjuntos de parejas indice => valor, o como suele expresarse en ingls, key, value. Hasta ahora hemos manejado un ejemplo con indices o keys numericos (tamben comocidos como arrays escalares), pero tambien podemos usar strings como indices, es decir, cadenas de texto. Este tipo de array es el array asociativo:
<?php $mis_ciudades = array( "madrid"=>"madrid", "catalua"=>"barcelona", "aragon"=>"zaragoza");

?>

las ventajas son evidentes: imagina por ejemplo un array agenda construido a base de parejas email =>tu email, telefono => tu telefono etc. O por ejemplo para construir menus de pginas web. Sin ir mas lejos los menus que puedes ver en este manual estan construidos a base de llamadas a distintos arrays:
<?php $temas_disp = array( "index.php"=>"Introduccin al ftp", "comandos.php"=>"Comandos bsicos", "chmod.php"=>"CHMOD, asignando permisos", "comandosftp.php"=>"Comandos ftp"

); ?>

arrays Multidimensionales
Un array multidimensional es simplemente un array en el que al menos uno de sus valores es, a su vez, un array:
<?php $agenda = array("domicilio" => "calle tal cual", "telefono" => $telefonos, "trabajo" => "empresa tal cual"); $telefonos = array("trabajo" => "7296489", "casa" => "5689524", "movil" => "9558987"); ?>

Y podemos acceder a dichos valores aadiendo un par de corchetes:


<?php $agenda['telefono']['casa'] = "5689524"; ?>

arrays hasta en la sopa


Te gusten o no, si deseas usar php, debers familiarizarte con los arrays. Si deseas recuperar datos de una base de datos, obtienes un array. Si dispones un conjunto de formularios, las variables pueden manejarse en forma de array; a los autores de PHP los arrays les encantan. Como final de esta introduccin a los arrays vamos a ver que se puede hacer con algunos de los arrays predefinidos. Y sin duda, uno de los mas tiles es $_SERVER. Se trata de un array predefinido (no tienes que crearlo) y de alcance global es decir, que puedes acceder al mismo desde cualquier parte de tu script. $_SERVER contiene informacin facilitada por el servidor (headers, rutas, ip, http referes etc). Como los valores del array son suministrados por el servidor, no hay garantias de que cada servidor facilite todos los valores, y algunos no son especialmente fiables. No obstante, es una de las construcciones mas usadas.

Recuperando todo el contenido


una de las funciones mas utiles es print_r, que simplemente, nos devuelve de forma legible informacin acerca de una variable o array. Su sintaxis?:

<pre>

<?php print_r ($_SERVER); ?> </pre>

Y este es el resultado. Si lo que deseamos es un volcado en pantalla de forma mas flexible, hemos de hacer un loop, es decir, ir llamando valores sucesivamente hasta extraerlos todos. Hay varias formas de hacer esto, la mas directa es foreach(): primera forma: foreach(expresion_array as $value) sentencia Por ejemplo
<?php foreach( $_SERVER as $value ) { echo "Valor: $value<br>\n"; } ?>

Segunda forma: foreach(expresion_array as $key => $value) sentencia:


<?php foreach($_SERVER as $key => $value) { echo "<b>".$key ."</b> tiene el valor de ". $value ."<br>"; } ?>

Ahora comprenders como en muchas pginas pueden decirte tu ip -189.167.218.83- o la pgina que acabas de visitar http://www.google.com.mx/url? sa=t&source=web&cd=5&sqi=2&ved=0CDsQFjAE&url=http%3A%2F %2Fwww.ignside.net%2Fman%2Fphp%2Farrays.php&rct=j&q=comandos%20de %20php&ei=hMOUTvrzNa_2sQLNj6jvAQ&usg=AFQjCNEPMFRemlyM4PPsCfpZMU31sqGwQ&cad=rja, sencillamente extrayendo valores de un array: $_SERVER['HTTP_REFERER']; y $_SERVER['HTTP_CLIENT_IP'];.

Nota sobre la deteccin de ips

Si un buen dia ves que un script te devuelve una ip que no es la tuya, posiblemente el problema sea que estes accediendo a la pagina a traves de una redireccin, normalmente un servidor cache de tu proveedor. En estos casos $_SERVER[REMOTE_ADDR]; no te sirve, ya que devuelve la ip del server intermedio. Sin embargo en estos casos, el array $_SERVER almacena un par de valores mas: HTTP_X_FORWARDED_FOR y HTTP_CLIENT_IP, cualquiera de los dos posiblemente te dar la ip que te interese. Entonces, en lugar de usar $_SERVER[REMOTE_ADDR]; una solucin mas segura es:
<?php if (getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } else { $ip = getenv("REMOTE_ADDR"); } ?>

es decir, si existe HTTP_X_FORWARDED_FOR usamos ese valor; si no existe, es que podemos usar REMOTE_ADDR;

You might also like