• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
723
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
58
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ÍndiceIntroducción1. Sintaxis básica1.1. Comentarios1.2. Declaración de variables1.3. Variables predefinidas1.4. Tipos de datos1.4.1. Cadenas1.4.2. Arrays1.5. Funciones para variables1.6. Constantes1.6.1. Constantes predefinidas1.7. Operadores1.7.1. Operadores aritméticos1.7.2. Operadores de asignación1.7.3. Incremento y decremento1.7.4. Operadores de comparación1.7.5. Operadores lógicos2. Estructuras de control2.1. Sentencias condicionales2.1.1. If2.1.2. If…else2.1.3. If…elseif2.1.4. If compacto2.1.5. Switch2.1.6. For2.1.7. Foreach2.1.8. While2.1.9. Include2.1.10. Require3. Cadenas4. Arrays5. Funciones6. Funciones de fecha y hora7. Cookies y sesiones7.1. Cookies7.2. Sesiones 1Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 2. IntroducciónPHP es un lenguaje de programación interpretado, diseñado originalmente para la creación depáginas web dinámicas. Es usado principalmente en interpretación del lado del servidor(server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea decomandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfazgráfica usando las bibliotecas Qt o GTK+.PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHPTools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdof en 1994;sin embargo la implementación principal de PHP es producida ahora por The PHP Group ysirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajola PHP License, la Free Software Foundation considera esta licencia como software libre.PHP es un lenguaje interpretado de propósito general ampliamente usado y que está diseñadoespecialmente para desarrollo web y puede ser embebido dentro de código HTML.Generalmente se ejecuta en un servidor web, tomando el código en PHP como su entrada ycreando páginas web como salida. Puede ser desplegado en la mayoría de los servidores weby en casi todos los sistemas operativos y plataformas sin costo alguno. PHP se encuentrainstalado en más de 20 millones de sitios web y en un millón de servidores, aunque el númerode sitios en PHP ha declinado desde agosto de 2005. Es también el módulo Apache máspopular entre las computadoras que utilizan Apache como servidor web. 2Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 3. 1. Sintaxis básicaObjetivo particular: Al finalizar el tema, el participante será capaz de conocer la sintaxisbásica y particularidades del lenguaje PHP.Introducción: PHP es un lenguaje de programación muy poderoso y a la vez sencillo deutilizar, gracias a esto se debe la gran popularidad que ha tenido los últimos años y aún sigueevolucionando.Para crear un documento en PHP primeramente se escriben los delimitadores <?php y ?>. Laextensión para los archivos de PHP es “.php”. 3Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 4. 1.1 ComentariosExisten 3 tipos de comentarios en PHP://Comentario para una línea.#############Comentario tipo shell############/**Comentarios para*varias líneas*/1.2 Declaración de variablesPara crear una variable en PHP simplemente se escribe un $ seguido del nombre de lavariable, por ejemplo:$a = 1; $fruta = “Manzana”;$MiVariable = “Valor”;PHP diferencia entre mayúsculas y minúsculas en las variables. Las variables no puedencomenzar con número, no pueden tener espacio, sin comas ni caracteres especiales.$valor actual [MAL]$#Datos X [MAL]$2Saldos X [MAL]$Prueba, Valor [MAL]Cuando utilizamos comillas dobles, podemos incluir dentro de la cadena nombres de variablesque serán evaluados (sustituidos por sus respectivos valores) a la hora de mostrar lainformación. Si introducimos nombres de variables dentro de una cadena encerrada entrecomillas simples, la variable no será evaluada.1.3 Variables predefinidas$PHP_SELF;$_COOKIES;$_GET;$_POST;$_SERVER;$_SESSION;$_FILES;1.4 Tipos de datosEn PHP existen todos los tipos de datos: numérico, decimal, boolean, string, array, objeto, etc.La ventaja de PHP sobre otros lenguajes es que no es necesario declarar las variables parapoderlas utilizar, simplemente se crean cuando se desean usar. PHP cuenta con un convertidorautomático de tipos de datos, es decir PHP puede hacer sin ningún problema la siguienteoperación y no marcara ningún error:$a = 3; //valor numérico.$b = “5”; //valor string.echo ($a + $b) //Imprime 8. 4Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 5. 1.4.1 CadenasPara crear un valor tipo cadena (string) simplemente se escribe el contenido de la variableentre comillas dobles (“”) o comillas simples (‘’).$nombre = “Carlos”;$apellido = “Santana”;echo $nombre.$apellido; //Imprime: Carlos SantanaCódigo de escape Significadob Espacio hacia atrás (backspace).f Cambio de página (form feed).n Cambio de línea (line feed).r Retorno de carro (carriage return)t Tabulación’ Comilla simple” Comilla doble1.4.2 ArraysLos arrays o matrices son estructuras que permiten el almacenamiento de un conjunto de datosbajo un mismo nombre; son una construcción tradicional de los lenguajes de programación.Podemos definir un array como un conjunto ordenado de elementos identificados por un índice(la posición del elemento dentro de esta colección ordenada), de modo que en cada posiciónmarcada por un índice el array contiene un valor. Se pueden construir tantos índices como sequiera, aunque el uso habitual de los arrays es en forma de matriz unidimensional. La longituddel array se modifica de forma dinámica siempre que le añadimos un nuevo elemento.En PHP, los arrays pueden estar compuestos de elementos de diferente naturaleza y su primeríndice o posición es la 0. Además, existen unos arrays especiales en PHP denominadosasociativos en los que el índice es un valor de tipo string, de modo que cada posición estádefinida por el par (clave, valor), pudiendo acceder al contenido (valor) a través de la clave.Ejemplo de array escalar:<?php$array[0] = “Mi Nombre”;$array*1+ = “es Carlos y tengo”;$array*2+ = “20 años”;$array*+ = “y estudio telemática”; //Lo insertara en la posición 3.for($i = 0; $i <= count($array) – 1; $i++) {echo $array*$i+.” “;}?>Ejemplo de array asociativo:<?php$array[“Nombre”+ = “Mi Nombre”;$array*“Es”+ = “es Carlos y tengo”;$array*“Tengo”+ = “20 años”;$array*“Estudio”+ = “y estudio analista en sistema”; //Lo insertara en la posición 3.echo $array*“Nombre”+.$array*“Es”+.$array*“Tengo”+.$array*“Estudio”+;?> 5Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 6. 1.5 Funciones para variablesGettype (variable): Devuelve el tipo de dato pasado como parámetro, pudiendo devolver comovalor: integer, float, string, array, class, object y unknown type.Settype (variable, tipo): Establece el tipo de dato a guardar en una variable. Con esta funciónpodemos realizar conversiones de un tipo de datos a otros. Devolverá true si ha tenido éxito; encaso contrario devolverá false.Isset (variable): Indica si una variable ha sido inicializada con un valor, en cuyo caso devuelvetrue, y en caso contrario false.Unset (Variable): Destruye una variable liberando los recursos dedicados a dicha variable. Esnecesario indicar como parámetros el nombre de la variable a destruir.Empty (variable): Devuelve true si la variable aún no ha sido inicializada o bien tiene un valorde 0 o es una cadena vacía y, en caso contrario devuelve false.Is_Int (variable), is_integer (variable), is_long (variable): Estas funciones devuelven true sila variable pasada como argumento es de tipo integer; caso contrario devuelve false.Is_float (var), is_real (var), is_double (var): Estas funciones regresan true si la variable es detipo float; caso contrario regresa false.Is_numeric (var): True si es un número o cadena numérica.Is_bool (var): True si la variable es de tipo lógico.Is_array (var): True si la variable es un array.Is_string (var): True si la variable es de tipo string.Is_object (var): True si la variable es un objeto.Intval (var, base), floatval (var), strval (var): Estas funciones sirven para realizarconversiones de tipos (casting), de modo que convierten a integer, float, o string,respectivamente, el valor de la variable que se le pasa como parámetro. En particular, lafunción intval() puede recibir además un segundo parámetro que representa la base a utilizaren la conversión (10 = decima, 8 = octal y 16 = hexadecimal), tomando por defecto la base 10de los números decimales.1.6 ConstantesUna constante es una variable que mantiene el mismo valor durante la ejecución del programa.Se puede asegurar que la constante mantiene siempre el mismo valor; en ninguna parte delscript se puede cambiar el valor de una constante una vez que se define. De hecho, losintentos de cambio provocan errores.Define (constante, valor): Esta función nos permite crear una constante asignándole sunombre y su valor a través de los parámetros que recibe.Defined (constante): Esta función devuelve true si la constante está definida y existe.1.6.1 Constantes PredefinidasConstante SignificadoPHP_VERSION Cadena que representa la versión del intérpretede PHP en uso.PHP_OS Cadena con el nombre del sistema operativocon el que se está ejecutando el intérprete dePHP.TRUE Verdadero. 6Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 7. FALSE Falso.E_ERROR Información sobre errores distintos a los deinterpretación del cual no es posiblerecuperarse.E_PARSE Informa que el intérprete encontró una sintaxisinválida en el archivo de comandos. Finaliza laejecución.E_NOTICE Informa que se produjo algo incorrecto quepuede provenir o no de un error. La ejecucióncontinúa.E_WARNING Denota un error que no impide que continúe laejecución.E_ALL Conjunto con todos los errores que se hanproducido.1.7 OperadoresLos operadores en PHP son muy parecidos a los de otros lenguajes como C, Java y Javascript.Se utilizan para determinar un valor, o bien, para obtener un valor final a partir de uno o másoperandos. Podemos encontrar varios tipos de operadores.1.7.1 Operadores AritméticosEstos operadores funcionan igual que en la aritmética básica y se pueden aplicar a lasvariables y constantes numéricas. Son los siguientes:Operador Ejemplo Descripción+ $a + $b Suma dos operandos.- $a - $b Resta dos operandos.* $a * $b Multiplica dos operandos./ $a / $b Divide dos operandos.% $a % $b Resto de la división entera1.7.2 Operadores de asignaciónEl operador de asignación más utilizado es “=”; su función básica es asignar un valor a unavariable, para que de este modo se pueda conservar dicho valor en memoria. El operador deasignación es un operador binario que siempre toma la forma:Variable = ExpresiónEste operador de asignación hace que la variable de la izquierda tome el valor de la expresiónde la derecha. PHP soporta otros operadores de asignación, que realmente son unacombinación del operador de asignación básico con operadores aritméticos y con el operadorde concatenación de cadenas.Operador Ejemplo Descripción= $a = $b $a toma el valor de $b+= $a += $b Equivale a: $a = $a + $b-= $a -= $b Equivale a: $a = $a - $b*= $a *= $b Equivale a: $a = $a * $b/= $a /= $b Equivale a: $a = $a / $b 7Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 8. %= $a %= $b Equivale a: $a = $a % $b.= $a .= $b Equivale a: $a = $a . $b1.7.3 Incremento y decrementoAl igual que otros lenguajes de programación como C, PHP soporta operadores específicospara incrementar y decrementar el valor de las variables. Además, el momento de su ejecucióndependerá de la posición en la que aparezcan respecto de la variable a la que son aplicados.Operador Ejemplo Descripción++++$a$a++Preincremento: Incrementa $aen uno y después devuelve $a.Postincremento: Devuelve $a ydespués incrementa en uno $a.----$a$a--Predecremento: Decrementa $aen uno y después devuelve $a.Postdecremento: Devuelve $a ydespués Decrementa en uno $a.1.7.4 Operadores de comparaciónOperador Ejemplo Descripción== $a == $b Los operandos son iguales.!= $a != $b Los operandos son distintos.=== $a === $b Los operandos son idénticos:iguales y del mismo tipo.!== $a !== $b Los operandos no son iguales odel mismo tipo.<$a < $bEl operando de la izquierda esmenor que el operando de laderecha.>$a > $bEl operando de la izquierda esmenor o igual que el operando dela derecha..<= $a <= $b El operando de la izquierda esmenor o igual que el de laderecha.>=$a >= $bEl operando de la izquierda es 8Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 9. mayor o igual que el de laderecha.1.7.5 Operadores lógicosLos operadores lógicos (también llamados operadores booleanos) se utilizan conjuntamentecon expresiones que devuelven valores lógicos. Con estos operadores se pueden combinarvarias condiciones y evaluarlas en una sola expresión.Operador Ejemplo Descripción&&and$a && $b$a and $b$a y $b son ambos true.||or$a || $b$a or $b$a o $b son true.!! $a$a es false, niega el valor lógicode la variable.Xor $a xor $b $a es true o $b es true, pero no loson los dos a la vez.2 Estructuras de controlLas estructuras de control o sentencias de control nos permiten modificar el flujo de ejecuciónbásico del programa, es decir, gracias a ellas la ejecución no tiene por qué ser totalmentesecuencial, vamos a poder controlar el flujo lógico de cualquier programa. Estas estructurasnos permiten bifurcar el flujo del programa y así ejecutar unas partes u otras del código segúnse cumplan una serie de condiciones, hacer que un determinado código no llegue a ejecutarsenunca o que lo haga tantas veces como queramos.2.1 Sentencias condicionalesSon las estructuras de control más sencillas, se basan en el uso de la sentencia if…else y enlas diferentes formas que ésta puede presentar. Utilizando estas sentencias, somos capacesde hacer que el programa elija entre dos caminos de ejecución diferentes en función de laevaluación de una expresión lógica. 9Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 10. 2.1.1 IfEs una de las más utilizadas e importantes en la mayoría de los lenguajes de programación. Susintaxis es la siguiente:If (condición) {[sentencias]}El intérprete de PHP lo que hace es evaluar la condición, que debe ser una expresión lógica y,si resulta verdadera, se ejecutarán las sentencias comprendidas entre las llaves “{” y “}” y, si esfalsa, PHP ignorará las sentencias y seguirá con la ejecución normal del programa, es decir,nos permite tomar decisiones en torno a una condición.Las sentencias if se pueden anidar, es decir, podemos poner dentro de un bloque if otrassentencias if, lo cual proporciona una flexibilidad completa para ejecuciones condicionales.<?php$a = 3;$b = 7;$c = 9;echo “El número mayor es:”;if($a > $b) {if($a > $c) {echo $a;}}if($b > $a) {if($b > $c) {echo $b;}If ($c > $b) {echo $c;}}?>2.1.2 If… elseLa sentencia if…else consta de un bloque if que se ejecuta cuando la expresión se evalúa atrue y de un bloque else cuyas instrucciones se ejecutarán cuando se evalúa a false. Lasintaxis de la instrucción if…else es la siguiente:If (expresión) {[sentencias]} else {[sentencias]} 10Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 11. 2.1.3 If…elseifHay muchas ocasiones en que se quiere evaluar una nueva comprobación utilizando unasentencia if dentro del cuerpo de una sentencia else; para estos casos se puede utilizar lasentencia elseif que nos permite combinar ambas sentencias en una sola. La sintaxis de lasentencia if…elseif es la siguiente:If(expresión) {[sentencias]} elseif(expresión) {[sentencias]} elseif(expresión) {[sentencias]} else {[sentencias]}Ejemplo:<?echo “Hoy es: ”;$dia = date(“D”);if($dia == “Mon”) echo “Lunes”;elseif($dia == “Tue”) echo “Martes”;elseif($dia == “Wed”) echo “Miércoles”;elseif($dia == “Thu”) echo “Jueves”;elseif($dia == “Fri”) echo “Viernes”;elseif($dia == “Sat”) echo “Sábado”;else echo “Domingo”;?>2.1.4 If compactoPHP utiliza dos operadores (“?” y “:”) para formar expresiones condicionales que devolveránuno de dos posibles valores basándose en el valor lógico obtenido al evaluar una expresión. Lasintaxis de estos operadores es:<expresion1> ? <expresion2> : <expresion3>;De este modo considerando expresión1, si ésta se evalúa a true, entonces de devolvería laevaluación de expresión2; en caso contrario, el valor devuelto sería el resultado de evaluar laexpresión3.<?php$a = 3;$b = 7;$c = 9;$mayor = ($a > $b) ? $a : $b;echo “El mayor es”;echo ($mayor < $c) ? $c : $mayor;?> 11Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 12. 2.1.5 SwitchLa sentencia switch se utiliza para compara un dato con un conjunto de posibles valores. Estatarea se puede realizar utilizando múltiples sentencias if o con una sentencia if…elseif múltiple,pero la sentencia switch es mucho más legible y nos permite especificar un conjunto desentencias por defecto, en el caso de que el dato no tenga un valor con que compararlo.Switch($variable) {case valor N: [sentencias][break;][default: sentencias; ]}Ejemplo:<?phpecho “Hoy es: ”;$dia = date(“D”);switch($dia) {case “Mon”: echo “Lunes”; break;case “Tue”: echo “Martes”; break;case “Wed”: echo “Miércoles”; break;case “Thu”: echo “Jueves”; break;case “Fri”: echo “Viernes”; break;case “Sat”: echo “Sábado”; break;default: echo “Domingo”;}?>2.1.6 ForEsta instrucción nos permite realizar un conjunto de instrucciones un determinado número deveces. Es una de las estructuras de control sintácticamente más compleja de PHP.For ([inicialización]; [condición]; [bucles]) {[sentencias]}Las tres expresiones cerradas entre paréntesis son opcionales, pero es necesario escribir loscaracteres punto y coma (“;”) que las separan aunque las expresiones se omitan, para quecada expresión permanezca en el lugar apropiado.<?echo “La suma de los 10 primeros números enteros es: ”;$suma = 0;for($i = 1; $i <= 10; $i++) {$suma += $i;echo $i;if($i == 10) echo “=”;else echo “+”;}echo “<strong>$suma</strong>”;?> 12Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 13. 2.1.7 ForeachEsta sentencia nos permite recorrer las estructuras de tipo array de una forma sencilla,obteniendo en cada paso de la iteración uno de sus elementos componentes. También sesuele utilizar para traducir tablas de tipo hash.Foreach($array as $variable) {[sentencias]}Lo que hace el bucle es recorrer cada uno de los elementos del array que tiene por nombre$array, asignado en cada paso el valor del elemento actual del array al contenido de la variable$variable. El bucle hace uso de un puntero interno que apunta a la posición actual del array(comenzando por la primera y siguiendo en orden ascendente) y que va actualizando de formaautomática en cada una de las iteraciones.<?php$array=array("Manzana","Pera","Platano");reset($array);foreach ($array as $fruta){echo "Fruta:$fruta<br>n";}?>También está función se puede aplicar a un array de tipo asociativo, en el que el índice encada elemento no es de tipo numérico.$a=array("uno"=>1,"dos"=>2,"tres"=>3,"diecisiete"=>17);foreach($a as $k=>$v){echo “$a*$k+=>$v”;}2.1.8 WhileLa sentencia while actúa de forma muy parecida a la sentencia for, pero se diferencia de éstaen que no incluye en su declaración la inicialización de la variable de control del bucle ni suincremento o decremento. Por tanto dicha variable se deberá declarar antes del bucle while ysu incremento y decremento se deberá realizar dentro del cuerpo de dicho bucle.While (condición) {[sentencias]}Con esta instrucción se va a poder ejecutar un conjunto de instrucciones un indeterminadonúmero de veces, siempre y cuando el resultado de comprobar la condición sea verdadera(debe ser una expresión que se evalúe a un valor lógico). Si la condición se evalúa a true, seejecutan las sentencias del cuerpo del bucle; después de ejecutarlas, se volverá a evaluar lacondición, de forma que, si ésta sigue cumpliéndose, se volverán a ejecutar las sentencias.Esto se repite hasta que la condición se evalúa a false, en cuyo caso no se ejecutarán las 13Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 14. sentencias del cuerpo del bucle y continuará la ejecución del script por la instrucción siguientea la sentencia while.<?php/* ejemplo 1 */$i = 1;while ($i <= 10) {print $i++; /* el valor impreso sería$i antes del incremento(post-incremento) */}/* ejemplo 2 */$i = 1;while ($i <= 10):print $i;$i++;endwhile;?>Los bucles do...while son muy similares a los bucles while, excepto que las condiciones secomprueban al final de cada iteración en vez de al principio. La principal diferencia frente a losbucles regulares while es que se garantiza la ejecución de la primera iteración de un bucledo...while (la condición se comprueba sólo al final de la iteración), mientras que puede no sernecesariamente ejecutada con un bucle while regular (la condición se comprueba al principiode cada iteración, si esta se evalúa como FALSE desde el principio la ejecución del buclefinalizará inmediatamente).<?php$i=0;do{print $i;} while($i>0);?>2.1.9 IncludeEsta función incluye y evalúa un fichero externo cada vez que es interpretada. Ambos pasos, lainclusión del fichero externo y su posterior evaluación, se realizan cada vez que el flujo delprograma llega a una línea que contenga la llamada a esta función. En caso de que el fichero aincluir no exista o su referencia sea errónea, la función genera un aviso o warning, continuandocon la ejecución por la siguiente instrucción.Cuando un archivo se incluye con include(), el intérprete sale del modo PHP y entra en modoHTML al principio del archivo referenciado, y vuelve de nuevo al modo PHP al acabar de leerdicho archivo. Por esta razón, cualquier código dentro del archivo referenciado que debiera serejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y finde PHP.variables.php<?php$color=verde;$fruta=manzana;?>prueba.php 14Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 15. echo "Una $fruta $color";//Unainclude variables.php;echo "Una $fruta $color"; //Una Manzana Verde2.1.10 RequireLa sentencia require() incluye y evalúa el archivo especificado. Require() e include() sonidénticas en todos los aspectos excepto en el modo de actuar ante un error. include() produceun Warning mientras que require() produce un Error Fatal. En otras palabras, no dude enutilizar require() si quiere que un fichero no encontrado cuelgue el procesamiento de la página.include() no se comporta de esta manera, el script seguirá funcionando de todas maneras.Asegurarse que include_path este configurado bien.3 CadenasEcho (cadena), print (cadena): No son funciones propiamente dichas, sino construcciones dellenguaje. Ambas muestran información por la salida estándar; no soportan ningún atributo deformato de salida y sólo admiten una única cadena como argumento en su llamada (cuandonecesitamos pasar más de un argumento a cualquiera de estas funciones, deberemos utilizarlas comillas).Printf (formato [, argumentos]): Imprime información por la salida estándar soportandodiferentes formatos de salida. Admite múltiples tipos de argumentos a visualizar.Imprime una cadena cuyo estructura depende del formato descrito en el argumento formato.Esta cadena está formada por una ristra de caracteres, algunos de los cuales se mostrarándirectamente, mientras que otros, los que van precedidos por el carácter “%”, conocidos comoespecificaciones de conversión, son utilizados para formatear la información.Strlen(cadena): Devuelve la longitud de la cadena pasada como argumento.Strstr(cadena, cadBusq), strchr(cadena, cadBusq): Busca la aparición de una cadenadentro de otra y devuelve la subcadena comprendida entre la primera aparición de la cadenabuscada (incluyéndola) hasta el final de la cadena en la que se realiza la búsqueda. Labúsqueda diferencia entre mayúsculas y minúsculas.Strrchr(cadena, cadBusq): Busca la aparición de un carácter en una cadena y devuelve lasubcadena. Si el elemento a buscar no es una cadena, se convierte a entero y se aplica comoel valor ordinal de un carácter.Stristr(cadena, cadBusq): Es igual a strstr(), salvo que no diferencia entre mayúsculas yminúsculas.Strpos(cad1, cad2 [, desplz]): Encuentra la primera posición de aparición de una cadena apartir de una cierta posición (si no se indica, el valor por defecto para el desplazamiento es 0).Strspn(cadena, máscara): Obtenemos la longitud de la subcadena más larga que estáformada sólo por caracteres contenidos en una máscara. Una vez encontrado un carácter queno está en la máscara se abandona la búsqueda.Strcmp(cad1, cad2): Compara dos cadenas y devuelve un valor menor que 0, si la segundacadena es mayor que la primera, si la segunda es mayor a la primera; mayor que 0, en casocontrario, y 0, si ambas son iguales.Substr(cadena, inicio [, tamaño]): Devuelve la subcadena que se encuentra a partir de unaposición dada y llega hasta el final de la cadena original, pudiendo de forma opcional decidir eltamaño de la subcadena a recuperar.Substr_replace(cad1, cad2, inicio [, tamaño]): Devuelve una cadena que es resultado de lasustitución de parte del contenido de una cadena original (indicado por una posición de inicio yopcionalmente por un tamaño) por el contenido de otra cadena. La cadena original no sufre 15Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 16. ninguna modificación.Str_replace(cadBus, CadRee, Cadena): Devuelve una cadena, que es resultado de lasustitución de todas las apariciones de una subcadena, por otro contenido en la cadenaoriginal.Substr_count(cadena, patrón): Devuelve el número de apariciones de una subcadena dentrode una cadena.Chop(Cadena): Devuelve la cadena argumento sin los espacios en blanco y caracteres de finde línea que se encuentran al final de la cadena.Ltrim(cadena): Elimina espacios en blanco que se encuentran al principio de una cadena detexto.Trim(cadena): Elimina los espacios en blanco que se encuentran al principio y al final de unacadena de texto.Str_pad(cadena, long): Rellena una cadena con un carácter de relleno (por defecto, es elespacio en blanco) hasta que la cadena resultante tenga la longitud deseada.Strtolower(cadena): Convierte una cadena de caracteres a minúsculas.Strtoupper(cadena): Convierte una cadena de caracteres a mayúsculas.Ucfirst(cadena): Se encarga de convertir a mayúscula el primer carácter de una cadena decaracteres, siempre que éste sea alfabético.Ucwords(cadena): Se comporta igual que la función anterior, salvo que ésta convierte amayúsculas el primer carácter de cada palabra que compone la cadena, siempre y cuandosean caracteres alfanuméricos.Addslashes(cadena): Devuelve una cadena de caracteres igual que la original en la que sehan escapado los caracteres especiales comillas dobles (“”), comillas simples (‘’) y barrainvertida ().Split(patrón, cadena): Devuelve un array resultado de dividir una cadena en diferentessubcadenas. El número total de elementos del array puede ser elegido a través de unparámetro opcional.}Explode(patrón, cadena): Devuelve un array resultado de dividir una cadena en diferentescadenas.Implode(nexo, cadena): Devuelve una cadena resultado de unir todos los elementos de unarray en el mismo orden en el que aparecen, pero con una cadena en medio de ellos.Htmlspecialchars(cadena): Se encarga de convertir los caracteres con un significado especialen HTML.Htmlentities(cadena): Es similar a la función htmlspecialchars(), salvo que esta funcióntraduce todos los caracteres a su correspondiente entidad en HTML.4 ArraysConstructorOtra forma de definir arrays es utilizar el constructor array() proporcionado por el lenguaje. Esteconstructor no es una función regular; tiene la siguiente definición:Array array (mixed valores, …)Ejemplo:$vector = array(“Carro”, “Moto”, “Bicicleta”);echo $vector[0]; //Carro;echo $vector[1]; //Moto;echo $vector[2]; //Bicicleta;El constructor array() también nos permite asignar los elementos del array en el orden en quequeramos. Para ello, indicamos el índice, seguido del símbolo “=>” y el valor del elemento. 16Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 17. Ejemplo:$vector = array(2 => “Manzana”, 0 => “Platano”, “Pera”);Los elementos a los que no se les asigna explícitamente un índice toman la posición secuencialrelativa a la última asignación de posición dentro del array.Arrays AsociativosA diferencia de los arrays simples, los arrays asociativos (también conocidos como tablashash o arrays indexados por cadena) están formados por un conjunto de valores que estánordenados respecto a un índice de tipo string, es decir, una cadena de caracteres.De igual manera que ocurre con los arrays simples, podemos utilizar el constructor del lenguajearray() para definirlos, o bien, hacerlo especificando de forma explícita cada uno de suscomponentes.Ejemplo:$vector = array(“animal” => “Perro”, “nombre” => “Valiente”, “raza” => “Labrador”,“sexo” => “Masculino”);Arrays MultidimensionalesPHP nos permite definir arrays multidimensionales mediante la combinación de arraysunidimensionales (que pueden ser tanto de tipo escalar, como asociativos).Ejemplo:$matriz*0+*0+ = “Salud”;$matriz*0+*1+ = “Dinero”;$matriz*1+*0+ = “Amor”;$matriz*1+*1+ = “Sexo”;$matriz*“peso”+*“moneda”+ = “Pesos”;$matriz*“peso”+*“cambio”+ = 10;$matriz*“dolar”+*“moneda”+ = “Dólar”;$matriz*“dolar”+*“cambio”+ = “0.1”;Funciones para arraysCurrent(array): Devuelve el valor de la posición actual del puntero dentro del array: todos losarrays tienen un puntero interno que apunta a la posición del elemento actual con el que seestá trabajando en un momento dado.Key(array): Devuelve el índice de la posición actual del array pasado como argumento.Next(array): Devuelve el valor del elemento siguiente al actual (si existe) y avanza el punterointerno una posición.Prev(array): Devuelve el valor del elemento anterior al actual (si existe) y retrocede el punterointerno una posición.End(array): Coloca el puntero interno en el último elemento de un array escalar.Reset(array): Devuelve el valor del primer elemento del array y sitúa el puntero interno en suprimera posición.Each(array): Se usa para recorrer arrays (sobre todo los asociativos), pues devuelve un par devalores correspondientes a la clave y al valor asociado a esa clave.List(array): Asigna una lista de variables en una sola operación. Suele utilizarse encombinación con la función each().Array_keys(array): Devuelve las claves que forman el array matriz. Admite un parámetroopcional que nos permite seleccionar sólo las claves cuyo valor coincida con un patrón dado.Array_values(array): Devuelve los valores que forman parte del array pasado comoparámetro.Sort(array): Ordena alfanuméricamente los valores de los elementos de un array de menor amayor. Para ordenar de manera inversa, disponemos de la función rsort(array).Asort(array): Ordena alfanuméricamente los valores de los elementos de un array de mayor amenor, pero manteniendo la relación existente entre los índices y sus valores asociados.Arsort(array) realiza la ordenación inversa. 17Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 18. Ksort(array): Ordena alfanuméricamente las claves de un array de menor a mayormanteniendo las correlaciones entre clave y valor asociado. Krsort(array) realiza la ordenacióninversa.Array_merge(array1, array2): Combina en un solo array los valores de los arrays que recibecomo argumentos.Array_pad(array, tamaño, relleno): Devuelve un array igual a matriz, pero modificando sunúmero de elementos hasta alcanzar la longitud deseada (tamaño) añadiendo nuevoselementos por la derecha (tamaño es positivo) o por la izquierda (tamaño es negativo).Array_slice(array, desplazamiento [, int tamaño]): Devuelve los elementos del array queestán situados a partir de una posición determinada por desplazamiento. Opcionalmente,podemos indicar el total de elementos que queremos.Array_splice(array, desplz [,tam [array substituto]]): Elimina elementos de un array,sustituyéndolos opcionalmente por los elementos de otro array (substituto).Array_push(array, valor1 [, valor2, …+): Inserta uno o más elementos al final del array (pila).Array_pop(array): Devuelve y elimina el último elemento del array (el que corresponde con lacima de la pila).Array_shift(array): Devuelve y elimina el primer elemento del array (el que corresponde con labase de la pila).Array_unshift(array, valor1 *, valor2, …+): Inserta uno o más elementos al principio del array.Array_reserve(array): Devuelve el array pasado como parámetro, pero con sus componentesen orden inverso.Range(limite_inf, limite_sup): Devuelve un array con los valores enteros comprendidos entreel primer argumento y el segundo que recibe la función, ambos inclusive.Array_count_values(array): Recibe como argumento un array y devuelve otro cuyos índicesson los mismos que los del array original y sus valores asociados son la frecuencia con la quese repiten dichos valores en el array original.In_array(elemento_busqueda, array): Con esta función podremos saber si un elemento estácontenido dentro de un array.Compact(): Esta función recibe como argumento una lista de variables que han sidopreviamente definidas, que pueden aparecer como cadenas de caracteres o como arrays ydevuelve un nuevo array en el que los índices son los nombres de las variables y el contenidode los elementos del array son sus correspondientes valores.5 FuncionesLa sintaxis de la declaración de una función es la siguiente:Function nombreFunción(*parametro1 *,…++) ,[sentencias]}Una vez declarada una función, ésta no se ejecuta hasta que se le llama desde cualquier partedel script. Para llamar a una función, sólo hay que escribir una sentencia que contenga elnombre de la función y, entre paréntesis, los valores de los argumentos de llamada de ella.<?phpFunction cuentaAtras() {For($i = 10; $i > 0; $i--) {echo $i.”…<br />“;}Echo “!Boom!”;}?><?php 18Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 19. cuentaAtras();?>En ocasiones, necesitaremos definir funciones que aceptan parámetros o argumentos. De estaforma conseguimos que la función sea más utilizable dentro del propósito general para el queestá definida.<?phpFunction cuentaAtras($inicio) {For($i = $inicio; $i>0; $i--)echo $i.”…<br />”;echo “!Boom!”;}cuentaAtras(5);?>Variables globales son todas aquéllas que se definen fuera del cuerpo de una función y sonaccesibles, en general, desde cualquier punto del código.En PHP, las variables globales deben ser declaradas globales dentro de la función si van a serutilizados dentro de dicha función, anteponiendo a su definición la palabra reservada global. Unsegundo método para acceder a las variables globales desde un ámbito local es usando elarray $GLOBALS (es un array asociativo con el nombre de la variable global como clave y loscontenidos de dicha variable como el valor del elemento del array).Variables locales aparecen definidas dentro del cuerpo de una función y sólo pueden seraccedidas desde dentro de esta función. Cualquier variable que se use dentro de una funciónestá, por defecto, limitada al ámbito local de la función. Esto quiere decir que, si declaramosuna variable local con el mismo nombre que una variable global, dentro de la funcióntrabajaremos con la versión local de la variable.<?php$inicio = 0;$final = 9;Function cuentaAtras() {Global $final; #Variable global.$inicio = 7; #Variable local.Static $num = 0; #Variable estáticaFor(;$inicio>$final;$inicio--)Echo $inicio.”…<br>”;$num++;Echo “!Boom -$num-“;}cuentaAtras(); //$num vale 1.cuentaAtras(); //$num vale 2.?>Del mismo modo que las funciones pueden recibir valores, también pueden devolverlos. Ladevolución de un valor desde una función trabaja de igual forma que la devolución de un valoren una expresión, de manera que el valor devuelto desde una función puede ser asignado auna variable o utilizado dentro de una expresión. Se puede devolver cualquier tipo de valoresincluyendo listas y objetos, pero sólo un único valor; para devolver múltiples valores,deberemos utilizar un array. 19Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 20. <?phpFunction ElMayor($dato1, $dato2, $dato3) {$elmayor = ($dato1 > $dato2) ? $dato1 : $dato2;$elmayor = ($elmayor > $dato3) ? $elmayor : $dato3;Return $elmayor;}Echo “El Mayor de 17, 5 y 9 es “.ElMayor(17,5,9).””;?>Se dice que una función es recursiva cuando en algún punto de su cuerpo se llama a sí misma.Hay que tener cuidado al escribir una función recursiva, ya que puede ocurrir que se llame a símisma indefinidamente. Por tanto, es esencial asegurarse de implementar una forma adecuadade terminar la recursión: es lo que se denomina como condición de parada.La recursión nos sirve para solucionar algunos problemas complejos; un ejemplo típico derecursión es hallar el factorial de un número.<?phpFunction Factorial($numero) {If($numero == 0) return 1;Return $numero * Factorial($numero – 1);}Function Factor_Iterativo($numero) {Echo “$numero! = ”;For($factorial = 1; $numero > 1; $numero--) {$factorial *= $numero;Echo “$numero x ”;}Echo “1 = $factorial”;return $factorial;}Echo Factorial(5);Echo Factor_Iterativo(5);?>6 Funciones de fecha y horaEs muy importante en muchos problemas y aplicaciones llevar un control con la fecha y la horaen un determinado momento, o bien, conocer la fecha para saber si tenemos que ejecutar unprograma u otro…; existen muchas circunstancias donde es necesario conocer estos datos.PHP nos ofrece una gran variedad de funciones para abordar con mayor rapidez y de unaforma más sencilla los distintos problemas relacionados con el manejo de fechas y tiempos quenos puedan ir saliendo a la hora de realizar nuestros programas.En casi todos los sistemas informáticos hay una fecha de inicio común, a partir de la cual seempieza a contar el tiempo. En el caso de los sistemas UNIX la fecha elegida como comienzoes el día 1 de enero de 1970 a las 00:00:00 GMT, fecha que se conoce como el principio de laera UNIX. El contador de tiempo se conoce como marca de tiempo (timestamp) y representa elnúmero de segundos transcurridos desde una fecha dada. En PHP todas las funciones defecha/hora que trabajan con marcas de tiempo hacen referencia a esta fecha.Time(): Obtiene la marca de tiempo UNIX actual. 20Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 21. Checkdate(): Valida una fecha en formato gragoriano.Date(): Da formato a la hora y la fecha locales.Getdate(): Obtiene información sobre la fecha y hora locales.Gettimeofday(): Obtiene la hora actual.Gmdate(): Formatea la fecha y la hora a formato GMT.Gmmktime(): Obtiene la marca de tiempo UNIX de una fecha con formato GMT.Gmstrftime(): Formatea la fecha y hora con formato GMT a las características locales.Microtime(): Obtiene la marca de tiempo UNIX actual en microsegundos.Mktime(): Obtiene la marca de tiempo UNIX para una fecha dada.Strftime(): Formatea la hora actual de acuerdo con las características locales.Strtotime(): Traduce una fecha u hora descrita en inglés a su correspondiente marca detiempo UNIX.Hay una serie de parámetros que tienen un significado propio y son reconocidos dentro de lacadena de formato.Valores Descripcióna “a.m.” o “p.m.”A “A.M.” o “P.M.”d Día del mes con dos dígitos (de 01 a 31)D Día de la semana con tres caracteres.F Nombre del mesh Hora en formato 01 a 12H Hora en formato 00 a 23g Hora en formato 1 a 12 (sin cero)G Hora en formato 0 a 23 (sin cero)i Minutos de 00 a 59j Día del mes en formato 1 a 31 (sin cero)l Día de la semana, en texto completoL 1: si es año bisiesto, 0: si no es un año bisiesto.m Mes de 01 a 12M Mes con tres caracteresn Mes de 1 a 12s Segundos de 00 a 59S Sufijo ordinal en inglés (“th”, “nd”)t Número de días del mes dado, de 28 a 31U Segundos transcurridos desde el valor de inicio (01-01-1970)w Día de la semana de 0 (domingo) a 6 (sábado)y Año con cuatro dígitosY Año con dos dígitosz Día del año de 0 a 365Z Diferencia horaria en segundos de 43200 a 43200 21Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 22. 7 Cookies y sesionesLos usuarios normalmente completan un formulario modificando sus controles (introduciendotexto, seleccionando objetos de un menú, etc.), antes de enviar el formulario a un agente paraque lo procese (por ejemplo, a un servidor Web, a un servidor de correo, etc.).Todos los controles presentes en un formulario, para que sean efectivos, deben aparecerincluidos dentro de un elemento form de HTML. La etiqueta FORM actúa, por tanto, comocontenedor de controles. Pero, además, especifica entre otros:-El programa que manejará los datos del formulario una vez haya sido completado y enviado(atributo action). El programa receptor debe ser capaz de interpretar las parejas nombre/valorpara poder hacer uso de ellas.-La forma en la que se enviarán los datos del usuario al servidor (atributo method).-El tipo MIME usado para enviar los datos del formulario (atributo enctype). El valor por defectode este atributo es application/x-www-form-urlencode.El atributo method del elemento form especifica el método HTTP usado para enviar los datosdel formulario al agente procesador. Este atributo puede tener dos valores:Get: El conjunto de datos del formulario se agrega (con el carácter “?” como separador) al URIespecificado en el atributo action (el programa que tratará los datos) y este nuevo URI se envíaal agente procesador.Post: Los datos del formulario se incluyen en el cuerpo del mensaje que se envía al agenteprocesador.El conjunto de datos del formulario que se envía al agente servidor es una secuencia deparejas nombre_de_control/valor construida a partir de los elementos del formulario. Cada unode los controles tiene asociado un nombre que viene dado por su atributo name. De igualforma, cada control tiene tanto un valor inicial, como un valor actual, que son ambos cadenasde caracteres. En general (excepto en el caso del elemento textarea), el valor inicial de uncontrol puede especificarse con el atributo value del elemento de control. El valor actual delcontrol se iguala en un primer momento al valor inicial y, a partir de ese momento, el valoractual del control puede ser modificado a través de la interacción con el usuario y/o mediantescripts que se ejecuten en el cliente. El valor inicial de un control no cambia. Así, cuando sereinicializa el formulario, el valor actual de cada control se iguala a su valor inicial. Si elelemento de control no tiene un valor inicial, se le asigna el valor nulo.Variable Contenido_POST Array que contienen las variables pasadas a través del métodoPOST. Su uso es análogo al array HTTP_POST_VARS de versionesanteriores a la 4.2.0 de PHP (obsoleto)._GET Array que contiene las variables pasadas a través del método GET.Su uso es análogo al array HTTP_GET_VARS de versionesanteriores a la 4.2.0 de PHP (obsoleto)._REQUEST Array que contiene las variables pasadas a través de cualquiermecanismo de entrada. 22Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com
  • 23. 7.1 CookiesBásicamente, las cookies son ficheros de texto ASCII que almacenan información siguiendouna estructura básica de pares identificador = valor. Su tamaño es relativamente pequeño, nosuperando en ningún caso los 4 Kb. El modo en que se almacenan, los directorios en que sealmacenan y el resto de características propias de una operación de lectura/escritura sobredisco dependen de gran manera del sistema operativo y del navegador que tenga instalado elequipo cliente. De igual forma, la posibilidad de hacer uso de cookies depende que el softwareutilizado para acceder a la aplicación Web (normalmente un navegador) cuente con estacaracterística y que, además, esté habilitada.PHP propone una sola función para el manejo básico de cookies (creación y borrado) cuyasintaxis es la siguiente:Setcookie(Nombre_Cookie, valor, tiempo_de_vida); #Crea.Setcookie(Nombre_Cookie); #Elimina la cookie.Para poder acceder a los contenidos de las cookies, PHP proporciona una variable globalconsistente en un array asociativo formado por todas las variables pasadas a través de lascookies. Es la variable $_COOKIE:$_COOKIE*“nombre_de_la_cookie”+;7.2 SesionesEl modo principal de activar el uso de sesiones cuando lo deseemos es hacer uso de la funciónsession_start().Esta función crea una nueva sesión y genera el nuevo identificador, o retoma la sesión en casode que existiera, utilizando el identificador de sesión que se había propagado haciendo uso dela URL o de cookies.Session_register(nombre [, nombre]): Registra una nueva variable global para la sesiónactual. En caso que no exista la sesión, la crea realizando una llamada implícita a la funciónsession_start().Session_is_registered(nombre): Devuelve true cuando la variable cuyo nombre se ha pasadocomo argument a la llamada está registrada dentro de la sesión actual.Session_unregister(nombre): Evita que la variable que se ha pasado como argumento a lallamada sea salvada como parte de la sesión actual, es decir, la elimina de la sesión, perosigue siendo una variable del script donde se ejecuta (para esto tendríamos que llamar a lafunción unset()). 23Manual curso básico de PHP, por ZNPHP, 2008Traducción al español: Rodrigo Alfaro – ralfaro.pinto@outlook.com