Documente Academic
Documente Profesional
Documente Cultură
Variables alfanumricas Almacenan textos compuestos de nmeros y/o cifras Cadenas Almacenan variables alfanumricas $cadena="Hola amigo";
Tablas Almacenan series de informaciones numricas y/o alfanumricas $sentido[1]="ver"; $sentido[2]="tocar"; $sentido[3]="oir"; $sentido[4]="gusto"; $sentido[5]="oler";
Objetos Se trata de conjuntos de variables y funciones asociadas. Presentan una complejidad mayor que las variables vistas hasta ahora pero su utilidad es ms que interesante.
El PHP soporta distintos tipos de datos, que no los tiene que impostar el programador, sino que son asumidos directamente por el motor, siempre que el programador no cambie el tipo (utilizando la funcin settype() ). Los datos pueden ser: Integer; Floating Point number; String; Array; Object.
INTEGER
Los Integers, o enteros, pueden tener distintos valores nmericos que se expresan con diferentes anotaciones. $a = 18; # decimal $a = -18; # decimal negativo $a = 022; # anotacin octal; es igual a 18 decimales $a = 0x12; # anotacin Hexadecimal, es igual a 18 decimales Probablemente, por lo menos para empezar, tendris que utilizar sobre todo los nmeros
decimales, sin embargo hay que saber que el lenguaje admite incluso otras anotaciones ademas de la decimal.
Este tipo de datos son los nmeros con la coma mvil, por ejemplo, 9.876. La sintaxis para utilizarlos es bastante simple: $a = 9.876; $a = 9.87e6;
Strings
Con respecto a las strings hay mucho ms que decir porque son tipos de datos diferentes. La sintaxis de base es: $string = "Yo soy una cadena"; Si se utilizan las comillas (""), el contenido de la cadena se expande (o, tcnicamente, "interpolado") , como en el ejemplo a continuacin: $num = 10; $string = "El nmero es $num"; Esto visualizar "El nmero es 10". Sin embargo, como con todos los lenguajes, tambin con los PHP tenemos caracteres especiales que tienen que estar anticipados por un smbolo, por ejemplo: $num = 10; $string = "El nmero es "$num""; Los que piensen que el output de este cdigo es 'El nmero es "10"' se equivocan. A parte de que, as como est escrito, el script dara un error de redaccin, las comillas son caracteres especiales, sin embargo, es posible utilizarlas. Por lo tanto la sintaxis correcta para el mando es: $num = 10; $string = "El nmero es \"$num\""; Otros caracteres especiales son: \n -> newline \r -> carriage return \t -> tabulacin \\ -> backslash \$ -> smbolo del dlar
La alternativa a los caracteres de escape, cuando no haya contenidos que extender, son los pices (''); por ejemplo: $string = '$ es el smbol del dlar'; visualizar precisamente los que estn en los pices. Cuidado con un error muy comn: $num = 10; $string = 'El nmero es $num'; no visualizar "El nmero es 10" sino "El nmero es $num". Por lo tanto, podemos decir que con los pices el contenido de la cadena se se hace una transmisin literal, tal como est escrito entre las pices.
Array
El PHP soporta tanto los array escalares como los array asociativos. En PHP un array de valores se puede crear explcitamente definiendo los elementos, o su creacin puede hacerse introduciendo valores en el array. Por ejemplo: $a = ("abc", "def", "ghi"); crea el array definiendo explcitamente los elementos del array, al contrario de lo que ocurre en el ejemplo siguiente: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; En este caso, el array se crea con tres elementos. Recordemos que el primer elemento de un array se identifica con el nmero "0". Si, por ejemplo, la longitud de una array es "5", ste incluye seis elementos. El elemento que tiene el ndice "0" es el primero del array. Si, en cambio, para aadir elementos a un array (supongamos que nos referimos al que hemos creado arriba) se utilizan los corchetes vacos y los datos se ajustan al array. Por ejemplo: $a[] = "lmn"; $a[] = "opq"; En este caso caso, el array se alarga 2 elementos y resulta ser: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; $a[3] = "lmn"; $a[4] = "opq"; Este ejemplo es mucho ms til cuando queremos ajustar los elementos al
array sin acudir a funciones especficas y sin tener que leer el nmero de los elementos que estn en el array. Todo se ajustar automticamente y correctamente. Los array asociativos se basan, en cambio, en parejas "name-value" y un ejemplo podra ser: $a = array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "mario@rossi.com", ); Es interesante la posibilidad que tiene la funcin array de introducir las entries, como en el ejemplo que sigue: $a = array( "primero" => array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "mario@rossi.com", ), "segundo" => array( "nombre" => "Marco", "apellido" => "Verdi", "email" => "mario@verdi.com", ) ); Ejecutar en este array una instruccin del tipo: <? echo $a["segundo"]["email"]; ?> visualizar "mario@verdi.com".
Objects
En PHP se pueden utilizar tambin los objetos. Para empezar vamos a ver un ejemplo: class visualiza { function ejecutar_visualiza () { eco "Visualiza un mensaje"; } } $obj=new visualiza; $obj->ejecutar_visualiza(); En primer lugar definimos la clase "visualiza", que incluye la funcin "ejecutar_visualiza" que quiere decir que visualiza simplemente un mensaje en la pantalla. Con la declaracin "new" inicializamos el objeto "$obj" e invocamos la
funcin visualizar con el operador -> en $obj. Como podis ver, utilizar los objetos no es nada difcil aunque, para describirlos ms en detalle, seran neceserario ms explicaciones.
Operadores
Los operadores que se pueden utilizar con PHP son parecidos a los que se utilizan con otros lenguajes de programacin. Para nuestra comodidad, los vamos a dividir en distintas "familias": los operadores aritmticos, los operadores de asignacin y todos los dems.
Operadores aritmticos
Los operadores aritmticos son los ms simples y son: $a + $b -> sumar $a - $b -> restar $a * $b -> multiplicar $a / $b -> dividir $a % $b -> resto Fijmonos un momento en los ltimas dos: El resultado de la divisin no se aproxima al entero que est ms cerca sino que da todo el nmero. El nmero de los caracteres despus del punto se define en el archivo php3.ini en la lnea: precision = 14 Por lo tanto, saldrn slo 14 nmeros despus de la coma, siempre que los haya, como en el ejemplo: $a = 12; $b = 5; $c = $a / $b; echo $c; el resultado es 2.4 y se visualizar precisamente como 2.4, no como 2.40000000000000. Por lo tanto, los 14 decimales se visualizan slo si existen y no indiscriminadamente como ceros intiles. el resto se da por s solo, sin el resultado de la divisin misma. Si en el ejemplo anterior hubieramos utilizado "%" en vez de "/", el resultado habra sido "2".
Asignacin
A menudo, desgraciadamente, los operadores de asignacin se confunden con el operador de identidad. El operador "=" tiene un significado que no hay que confundir con el de "==". El operdaor de asignacin es el smbolo igual a (=) que da a una variable un valor, por ejemplo $a = 2; asigna a "$a" el valor "2". El error que se hace a menudo es escribir algo como: if ($a=2) { do_something; } que, si lo leen ojos inexpertos, podra parecer una expresin para decir que si $a es IGUAL a 2 hay que ejecutar el cdigo que est entre las llaves. Pues bien, no es tan grave: si hubieramos querido escribir lo que acabamos de decir, hubiramos tenido que utilizar: if ($a == 2) { do_something; }
Otros operadores
Los operadores que el PHP nos pone a disposicin son muchos y veremos en est pgina los ms importantes que hasta ahora no hemos tenido la posibilidad de analizar. En particular, hablaremos de los valores booleanos, los matemticos y los de incremento-decremento: $a & $b operador "And" ($a e $b); $a && $b como arriba, pero con una procedencia ms alta; $a | $b operador "Or" ($a o $b); $a || $b como arriba, pero con una procedencia ms alta; $a ^ $b operador "Xor" ($a o $b pero con ambos); !$a operador "Not" (verdadero si $a no es verdadera);
$a == $b operador de igualdad, verdadero si $a tiene el mismo valor que $b; $a != $b lo opuesto de lo de arriba; $a < $b; $a es menor de $b; $a <= $b $a es menor o igual a $b; $a > $b $a mayor que $b; $a >= $b $a es mayor o igual a $b; $a ? $b : $c ste, se utiliza ms con las expresiones que con las variables, evala $b si $a es verdadera, y evala $c si $a es falsa; ++$a incrementa de uno $a y la devuelve; $a++ devuelve $a y la incrementa de uno --$a $a-como los dos anteriores, pero se decrementa el valor;
Estructuras de control
No pueden faltar en un lenguaje de programacin las estructuras de control que permiten que el programador ejecute unas acciones en el programa cuando se dan (o no se dan) determinadas condiciones. IF If permite ejecutar un bloque de noticias si se da (o no se da) una determinada condicin. Su sintaxis es: if (condicin) statement Por ejemplo, queremos que un script nos indique si dos variables son
iguales: $a = 2; $b = 2; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } If se puede utilizar tambin de forma diferente de la que acabamos de explicar. Aqu hay un ejemplo: <? $a = 2; $b = 2; if ($a == $b) : ?> $a es igual a $b. <? endif; ?> que hace lo mismo que la de arriba. "if" se puede utilizar incluso entre llaves, utilizando "endif" cuando se quiera terminar el bloque "if"; por ejemplo: if ($a == $b) eco "\$a es igual a \$b y valen $a.\n"; endif;
ELSE
Else sirve para "completar" if: con if, de hecho, hemos decidido que ocurra algo cuando se da una condicin. Con else podemos programar qu ocurre cuanda esta condicin no se da. Un ejemplo podra ser: $a = 2; $b = 3; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } else { eco "\$a es distinta de \$b.\n\$a vale \"$a\" mientras \$b vale \"$b\".\n"; }
ELSEIF
Elseif permite especificar casos no definidos por "if". Un ejemplo podra ser: "Si $a es igual a $b visualiza $a, si $a es distinto de $b visualiza un mensaje de error; avisa si $a no existe, avisa si $b no existe". Slo con if y else no se podra conseguir, sin embargo con elseif se convierte en una oparacin muy simple:
if ($a == $b) { echo "\$a es igual a \$b.\n"; } elseif ($a != $b) { echo "\$a es distinto de \$b.\n"; } elseif (!$a) { echo "\$a no existe.\n"; } elseif (!$b) { echo "\$b no existe.\n"; } Fijaos en dos aspectos: en un bloque pueden estar todos los elseif que necesitis y, para los que conocen el Perl, cuidado con no escribir "elsif" en lugar de "elseif", porque el significado es el mismo pero "elsif" no es reconocido por el PHP as como elseif no es reconocido por el Perl.
WHILE
La condicin "while" se comporta exactamente como en C; la sintaxis de base es: while (expresin) declaracin Como "if", adems, "while" se puede utilizar con o sin corchetes, aadiendo en el segundo caso la declaracin "endwhile". Los dos ejemplos que ponemos a continuacin son lo iguales: /* Primer ejemplo: */ /* $a se incrementa y se visualiza */ /* hasta que su valor no supere "5" */ $a = 1; while ($a <= 5) { print $i++; } /* Segundo ejemplo */ $a = 1; while ($a <= 5) print $i++; endwhile; Traducidas, estas expresiones hacen posible que, hasta que (while) $a sea menor o igual a "5", $a se incrementa de una unidad y luego se visualiza.
FOR
Tambin "for" se comporta exctamente como en C o en Perl. Despus del "for", se tienen que introducir tres expresiones que, mientras devuelvan
"TRUE" permiten la ejecucin de la declaracin que est a continuacin. Vamos a ver el ejemplo: for ($a = 0 ; $a <=10 ; $a++) { print $a; } Esto visualizar los nmeros entre "0" y"10". En las tres expresiones entre parntesis hemos definido que: $a tiene valor "0"; $a es menor o igual a "10"; $a se incrementa de una unidad. Por lo tanto, por cada valor de $a a partir de "0" hasta "10" $a se visualiza.
SWITCH
"Switch" permite sustituir una serie de "if" en la misma expresin y, por supuesto, actuar independientemente del valor de sta: switch ($i) { case 0: echo "\$i vale 0"; break; case 1: echo "\$i vale 1"; break; } Aqu hemos introducido "break" que permite salir de un bloque en el caso de que se realice una condicin establecida.
$num = -3.4; $aa = abs($a); echo $aa, "\n"; devolver 3.4 acos: devuelve el arco coseno del argumento. $arg = 1; $arc_cos = acos($arg); echo "$arc_cos\n"; devolver 0. array: vase la explicacin anterior con respecto a estos tipos de datos; asin: devuelve el seno del argumento;
devolver 5.77. La funcin "bcadd" toma, como los primeros dos argumentos, dos nmeros y, como terceros argumentos opcionales, el nmero de cifras que hay que visualizar despus de la coma; bccomp: compara dos nmeros. La funcin toma como argumento dos nmeros y, como opcin, otro nmero que determina el nmero de decimales que hay que tener en cuenta despus de la coma para considerar los dos nmeros iguales. Devuelve "0" si los dos nmeros son iguales, "+1" si el nmero a la izquierda es mayor que el de la derecha y "-1" si ocurre lo contrario. Fjaos en el ejemplo siguiente: $comp = bccomp(0.334, 0.301, 2); echo $comp; que devolver "1". Pero, si en vez de "2" hubisemos introducido 1 o nada, el resultado sera "0". bcdiv: divide dos nmers, con las mismas modalidades descritas para "bcadd" y "bccomp"; bcmult: multiplica dos nmeros y es posible aadir un parmetro ms para limitar el nmero de cifras despus de la coma: $molt = bcmul(2.31, 3.21, 2); echo "$molt\n"; devolver 7.41; bcpow: eleva a potencia dos nmeros con la posibilidad de especificar el nmero de cifras despus de la coma: $pot = bcpow(2.3, 3, 2); echo "$pot\n"; eleva 2.3 a la tercera potencia, aproximando el resultado a la segunda cifra decimal; bcsqrt: calcula la raz cuadrada de un nmero con la posibilidad de aproximar el nmero de cifras despus de la coma, aadiendo un segundo elemento a la funcin (como ocurra para las dems funciones matemticas vistas antes); bcsub: resta un nmero de otro con la posibilidad de aproximar las cifras despus de la coma: $num = bcsub(2, 5); echo "$num\n"; devolver "-3";
ceil: devuelve el valor entero ms alto con respecto al nmero que se ha pasado como argumento a la funcin: $num = ceil(3.22112); echo "$num\n"; devuelve "4"; chdir: cambia el directorio de trabajo: $dir = "/var/www/"; chdir($dir); devuelve TRUE si la operacin tiene xito, FALSO en el caso contrario. Por ejemplo si el directorio no se puede leer; checkdate: controla que una fecha sea vlida. Para que sea vlida una fecha tiene que tener: - ao entre "0" y "32767"; - mes entre "1" y "12"; - da entre "0" y el nmero que se refiere al nmero de das del mes al que nos referimos; chgrp: intenta cambiar el grupo de un archivo a "grupo". La funcin acepta como argumentos el nombre del archivo al que queremos cambiar los permisos y el nuevo grupo al que pertenecen: chgrp(filename, grupo); En los sistemas Windows no funciona, sin embargo devuelve siempre verdadero. chmod: es lo mismo que el mando de sistema Unix "chmod" y tiene la misma sintaxis que chgrp; chmop: desplaza los "whitespaces" de una cadena. Se utiliza a menudo para borrar los caracteres "\n" cuando se recibe un argumento del estndar input; el carcter que se elimina se puede leer con: $carcter = chop($string); echo "$carcter\n"; chown: cambia el propietario de un archivo, como el correspondiente mando de sisetma Unix. Acepta como argumento el nombre del archivo y el nombre del nuevo propietario: $file = "prueba.txt"; chown($file, $user); En los sistemas Windows no hace nada y devuelve siempre verdadero (y adems es til introducir esta funcin en un script que no soporta el
"chown"); chr: devuelve el carcter ASCII especificado por el nmero correspondiente. Me imagino que sabris, por ejemplo, que la combinacin "Alt + 0126" devuelve la smbolo (~); se puede ver con este cdigo: $ascii= "0126"; $char = chr($ascii); echo "$char\n"; chunk_split: divide una cadena en partes de "n" caracteres. El nmero puede pasar a la funcin despus de la cadena que hay que dividir. Si no se imposta, de default es asumido como 76. Por ejemplo: $string = "ste es un curso para aprender el lenguaje php": $split = chunk_split($string, 5); devolver: st o es u n cur so pa ra apr ender el l engua je php La funcin es til para el encoding MIME base64 que hemos visto anteriormente con la fucin "base64_encode"; closedir: cierra un directorio que hemos abierto antes con la funcin opendir() - vase; copy: crea la copia di un archivo: $file = "prueba.txt"; copy($file, "$file.bak"); cos: devuelve el valor del coseno del argumento; count: cuenta los elementos en una variable, por ejemplo: $arr[0] = "abc"; $arr[1] = "def"; $arr[2] = "ghi"; $count = count($arr); echo $count; devolver "3", visto que en el array "$arr" hay 3 elementos ($arr[0], $arr[1], $arr[2]); crypt: cripta una cadena; la sintaxis de la funcin crypt() es:
crypt(string, salt); Prcticamente tendramos que pasar a la funcin la cadena que tendr que ser criptada y, como opcin, el signo con el que la criptamos. Si ste no pasa a la funcin, se dar de forma random del PHP mismo. Un ejemplo podra ser el siguiente: $var = "sta es una variable"; $crypt = crypt($var, "aa"); echo $crypt; que devolver la cadena criptada;
Por ejemplo se podra escribir: echo (date("l d F y H:i:s a)); para tener la fecha en curso que, por ejemplo, podra ser: Friday 23 June 00 11:45:48 am debugger_off: inhabilita el depurador PHP; debugger_on: habilita el depurador PHP; decibin: convierte un nmero decimal en otro binario; por ejemplo, el nmero "10" decimal es "1010" en formato binario, y con el cdigo PHP podemos escribir: $bin = decbin(10); echo $bin, "\n"; que devuelve precisamente "1010"; dechex: convierte un nmero decimal en otro exadecimal; la sintaxis es igual a la que se ha utilizado para "decbin()"; decoct: convierte un nmero de formato decimal en otro de formato octal; la sintaxis es la misma que se ha utilizado para "decbin()"; define: define una constante. Como hemos visto en el captulo de las constantes, stas son parecidas a las variables, lo nico es que no llevan el smbolo del dlar delante. Para definir una constante se utiliza la siguiente sintaxis: define("CONSTANTE", "sta es una constante"); echo CONSTANTE; El ejemplo visualiza "sta es una constante"; defined: controla si existe una constante ya establecida. Por ejemplo, podra ser: define("CONSTANTE", "sta es una constante"); if (defined("CONSTANTE")) { echo "La constante se ha definido\n"; } else { echo "La constante no se ha definido\n"; } que visualiza un mensaje segn la constante se haya definido o no; die: visualiza un mensaje y sale del programa: if (defined($num)) { echo "\$num se ha definido\n"; } else { die ("\$num no se ha definido; imposibile seguir adelante\n");
} dirname: cuando se especifica un path, devuelve el path sin el nombre del archivo final: si por ejemplo el path es "/home/yourname/public_html/index.php3" la funcin devolver solamente "/home/yourname/public_html": $path = "/home/yourname/public_html"; echo(dirname($path)); Os habis dado cuenta de que esta funcin hace exctamente lo contrario de la funcin "basename()". Si combinamos las dos funciones, se puede obtener el path completo de un archivo, incluso su nombre;
echo: visualiza una o ms cadenas. No creo que haya mucho que comentar sobre esta funcin, en principio porque es muy simple y adems porque ya la hemos analizado y hemos visto como funciona. ereg_replace: devuelve una expresin regular con valores establecidos. En la funcin hay que incluir tres argumentos: el primero indica el texto que hay que sustituir, el segundo es el texto que se est utilizando y el tercero es la cadena que hay que modificar. Por ejemplo: $stringa = "ste es un curso ASP"; echo ereg_replace("ASP", "PHP", $cadena); Se hubiera podido escribir tambin: echo ereg:replace("ASP", "PHP", "ste es un curso ASP"); que, sin embargo, no tendra mucho sentido. ereg: ejecuta el matching de una expresin regular. El ejemplo que se encuentra en la documentacin es bastante claro: if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; } else { echo "Invalid date format: $date"; } Todo el procedimiento se desarrolla para controlar que una fecha est escrita en un formato correcto. Vamos a ver el significado de "[0-9]{4})-([09]{1,2})-([0-9]{1,2}". Para los que conocen las expresiones regulares, no ser difcil traducirlo con "un nmero entre 0 y 9 que hay que repetir cuatro veces y que tiene que astar seguido de un '-', de un nmero entre 0 y 9 repetido una o dos veces, de un '-' y de un nmero entre 0 y 9 repetido una o dos veces". Muy a menudo es mucho ms simple leer una expresin regular que traducirla al lenguaje hablado. eregi_replace: funciona exctamente como "ereg_replace()", solamente que, en este caso, la expresin regular se sustituye por una forma "case insensitive", es decir, pasando de los caracteres maysculas y minsculas; eregi: funciona excatmente como "ereg()", solamente que en este caso la expresin regular se sustituye mediante una forma "case insensitive"; error_log: enva un mensaje de error al archivo de log del servidor, directamente a la puerta TCP de la que ha llegado la solicitud o a un archivo. La sintaxis es: error_log(message, mesage_type, destination); Message_type es un nmero que especifica donde tiene que llegar el mensaje Puede ser: 0: el mensaje se enva al logger del PHP o al archivo especificado por
"error_log"; 1: el mensaje se enva por email al parmetro (probablemente una direccin email vlida) especificado en "destination"; 2: el mensaje se enva al depurador; 3: el mensaje se introduce en append en el parmetro especificado en destination"; escapeshellcmd: si se invoca un mando exterior de una shell, con este mando se consigue que delante de los metacaracteres de la shell haya un carcter de escape para evitar que el mando produzca errores; exec: ejecuta un programa externo; exit: sale de un script; el mando "exit()" es til cuando se quiere parar un script siempre que no se cumplan unas condiciones, por ejemplo: if (condicin) { ejecutar el bloque; } else { exit; } Recordad que "exit()" no lleva un mensaje de error como "die()": si os interesa dar "explicaciones" sobre el porqu el script termina, hay que utilizar "die()", pero no es posible escribir: exit "Salir del programa\n"; o mejor, es posible pero no tiene ningn efecto excepto el de salir; exp: eleva "e" (2.71828.....) a la potencia que es el argumento de la funcin: echo exp(3); devolver: 20.0855369...
3: para quitar el lock, cualquiera que sea el tipo; 4: para impedir que flock() bloquee un archivo cuando aplica el lock; Por ejemplo, para aplicar flock() en un puntero "$file" definido antes, se necesita escribir: flock($file, 2); /* Para impedir que el archivo se lea*/ ..... /* Cdigo para trabajar en el archivo */ flock($file, 3); /* Para quitar el flock */
hexdec: devuelve el valor decimal de un nmero exadecimal; implode: como se puede entender por el nombre, esta funcin no es nada ms que lo contrario de "explode". La sintaxis es igual, pero en este caso devuelve una cadena con los valores separados del primer argumento y la funcin; in_array: devuelve valor verdadero si en un array hay un determinado valor. Un ejemplo podra ser: $nmeros = array("1", "2", "3", "4", "5"); $num = 2; if (in_array($num, $nmeros)) { print "$num est en el array \$nmeros\n"; } is_array: controla si una fecha variable es un array: if (is-array($var)) { echo "\$var es un array\n"; } Lo mismo ocurre con las funciones siguientes, con la nica diferencia del argumento: - is_dir; - is_double; - is_executable; - is_file; - is_float; - is_int; - is_integer; - is_link; - is_long; - is_object; - is_readable; - is_real; - is_string; - is_writeable. isset: devuelve TRUE si existe la variable, falso si no existe. Por ejemplo, para ver si existe o no una variable es posible escribir: $a = 10; echo isset($a), "\n"; echo isset($b), "\n"; que devolver 1 y 0. recordemos que 1 se considera valor positivo (TRUE), 0 negativo (FALSE); join: une los elementos de un array con una cadena determinada; el uso es igual al de implde(); key: toma una clave de un array asociativo. Un ejemplo simple puede ser:
$array = array("1" => "uno"); $clave = key($array); echo "$clave\n"; que devolver "1". Esta funcin es til pata retomar todas las claves de los array asociativos complejos; link: crea un hard enlace. La sintaxis es: link(target, link); Las informaciones sobre los enlaces (a propsito de la existencia del archivo al que se refiere el enlace mismo) se pueden visualizar con linkinfo();