Variables Para Php

download Variables Para Php

of 23

Transcript of Variables Para Php

Variables numricas Almacenan cifras Enteros Real $entero=2002; $real=3.14159; Numeros sin decimales Numeros con o sin decimal

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";

Arrays Son las variables que guardan las tablas

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.

Vamos a verlos de uno en uno.

INTEGERLos 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.

Floating point number

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" => "[email protected]", ); 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" => "[email protected]", ), "segundo" => array( "nombre" => "Marco", "apellido" => "Verdi", "email" => "[email protected]", ) ); Ejecutar en este array una instruccin del tipo: visualizar "[email protected]".

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 operadoresLos 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 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 es igual a $b. 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 $val\n"; } que devuelve: nombre => valor nombre2 => valor2 Si, en cambio, el array no es asociativo, el cdigo ser: $array = array ("nombre", "valor", "nombre2", "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } y el resultado: 0 => nombre 1 => valor 2 => nombre2 3 => valor2 Seguramente os habis fijado en que la funcin "each()" a menudo se utiliza junto a "list()", que veremos a continuacin;

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...

explode: divide una cadena segn un determinado pattern. Por ejemplo,si queremos dividir una cadena que incluye tres nombres separados por comas, podemos escribir: $nombres = "Fulano,Mengano y Zutano"; list ($nombre1, $nombre2, $nombre3) = explode (",", $nombres); echo "$nombre1\n$nombre2\n$nombre3\n"; que devolver: Fulano Mengano Zutano Explode() es una versin simplificada de "split() que veremos sucesivamente. Las dos funciones, adems, son muy tiles cuando tenemos la necesidad de leer unos archivos incluidos en los listados.

Fclose, feof, filegroup, filesize... fclose: cierra un puntero en un archivo que se ha abierto antes con fopen(). Vase fopen() para ms informaciones; feof: controla un puntero en un archivo para ver si est al final del mismo; fgetc: restituye el primer carcter del puntero que se ha abierto antes con fopen(). Si, por ejemplo, el puntero $file seala el archivo "/tmp/prova.txt" que incluye solamente la lnea "Hola", aparecer un cdigo como el siguiente: $char = fgetc($file); echo "$char\n"; devolver "C" (por supuesto sin comillas); file_exists: controla si un archivo existe, en este caso dar TRUE sino FALSE, por ejemplo : if (file_exists($file)) { print "$file esiste; } Puede ser muy til utilizar esta funcin cuando necesitamos intervenir en uno o ms archivos para actuar sobre el mismo slo si ste existe sin arriesgarse a inexplicables "anomalas" del script; filegroup: devuelve el grupo al que pertenece el archivo: $filename = "/tmp/prueba.txt"; $group = filegroup($filename); echo "$filename pertenece al gruppo $group\n"; Obviamente, la funcin se implementa slo en los sistemas multiuser; filesize: devuelve la domensin de un archivo: $filename = "/tmp/prueba.txt"; $size = filesize($filename); echo "$filename -> $size\n"; filetype: determina el tipo de archivo; los valores posibles son: fifo, char, dir, block, link, file y unknown; flock: aplica el locking a un archivo; de modo especfico flock() opera en un puntero en un archivo que se ha abierto antes y las operaciones posibles son: 1: para el lock en lectura; 2: para el lock en escritura;

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 */

fopen: abre un archivo o un URL. La sintaxis es:fopen(filename, mode); Obviamente a "filename" le corresponde el nombre del archivo o el URL del mismo, y a "mode" la modalidad con la que se tiene que abrir. Aqu se puede elegir entre: r -> abre el archivo slo cuando se lee; r+ -> abre el archivo cuando se lee y se escribe; w -> abre el archivo slo cuando se escribe; w+ -> abre el archivo cuando se lee y se escribe; a -> abre el archivo slo cuando se escribe e introduce el puntero al final del archivo ("w" lo introduce al final) a+ -> abre el archivo cuando se lee y se escribe introduciendo el puntero al final del archivo; Por ejemplo, para abrir un archivo local slo para leerlo tendremos que escribir: $file = fopen("/tmp/prueba.txt", "r"); Para un URL, en cambio: $file = fopen("http://www.myhost.com/index.html", r"); Para todas las sucesivas operaciones en el archivo, adems, tendremos que actuar directamente sobre el puntero ($file) y no directamente sobre el archivo.

Header, hexdec, implode, in_array... header: enva cualquier header HTTP; por ejemplo: header("Pragma: no-cache"); Esta funcin es muy til en distintos casos: por ejemplo, para forzar una autorizacin se puede enviar un "401", etc.;

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();

list: da unas variables como si fueran partes de un array. Volvamos alejemplo que hemos hecho con each: $array = array ("nombre" => "valor", "nombre2" => "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } En este caso, list() se utiliza para "redactar" una lista de variables que se recogern del array sin darles un valor sino dejando a las partes sucesivas del cdigo la asignacin de sus valores. Adems hay que notar que las variables creadas por list() no tienen slo un valor, sino que cada vez que se invocan tienen un valor diferente, segn los elementos que se encuentran en el array.