Array
Array
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"; ?>
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"); ?>
<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"; } ?>
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'];.
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;