Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso Académico
2019-2020
Actualizado a
21/10/2019
Profesor
Jonay García González
Email
jonaygarciav@gmail.com
Tabla de Contenidos
Tabla de contenido
1. Sintaxis del Lenguaje PHP .............................................................................................................................. 1
1.1. Sintaxis básica .................................................................................................................................... 1
1.1.1 Etiquetas de PHP ....................................................................................................................... 1
1.1.2 Salir del modo HTML ................................................................................................................. 1
1.1.3 Separación de Instrucciones ...................................................................................................... 2
1.1.4 Comentarios .............................................................................................................................. 3
1.2. Tipos .................................................................................................................................................. 3
1.2.1 Booleanos .................................................................................................................................. 3
1.2.2 Números enteros (Integers) ...................................................................................................... 5
1.2.3 Números de punto flotante (floats) .......................................................................................... 6
1.2.4 Cadena de caracteres (string) .................................................................................................... 7
1.2.5 Arrays ......................................................................................................................................... 8
1.2.6 Iterables ..................................................................................................................................... 9
1.2.7 Objetos ...................................................................................................................................... 9
1.2.8 Nulo ......................................................................................................................................... 10
1.3. Variables .......................................................................................................................................... 11
1.3.1 Conceptos básicos ................................................................................................................... 11
1.3.2 Ámbito de las variables............................................................................................................ 12
1.3.3 Variables variables ................................................................................................................... 14
1.3.4 Variables desde fuentes externas ........................................................................................... 14
1.3.5 Variables predefinidas (TODO) ................................................................................................ 15
1.4. Constantes ....................................................................................................................................... 15
1.4.1 Constantes predefinidas .......................................................................................................... 16
1.5. Operadores (TODO) ......................................................................................................................... 17
1.5.1 Precedencia de operadores ..................................................................................................... 17
1.5.2 Operadores aritméticos ........................................................................................................... 19
1.5.3 Operadores de asignación ....................................................................................................... 19
1.5.4 Operadores de comparación ................................................................................................... 20
1.5.5 Operadores de incremento/decremento ................................................................................ 21
1.5.6 Operadores Lógicos ................................................................................................................. 21
1.6. Estructuras de Control (TODO) ........................................................................................................ 21
1.6.1 if / if-else / elseif ...................................................................................................................... 21
1.6.2 while ........................................................................................................................................ 23
Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que son <?php y ?>, y que indican a
PHP dónde empezar y finalizar la interpretación del código. Este mecanismo permite embeber a PHP en todo
tipo de documentos, ya que todo lo que esté fuera de las etiquetas de apertura y cierre de PHP será ignorado
por el analizador.
PHP también permite la etiqueta de apertura abreviada <? (la cual está desaconsejada debido a que sólo está
disponible si se habilita con la directiva short_open_tag del fichero de configuración php.ini, o si PHP se
configuró con la opción --enable-short-tags).
Si un fichero contiene solamente código de PHP, es preferible omitir la etiqueta de cierre de PHP al final del
mismo. Así se previene la adición de espacios en blanco o nuevas líneas accidentales después de la etiqueta
de cierre.
<?php
echo "Hola mundo";
Cualquier cosa fuera de un par de etiquetas de apertura y cierre es ignorado por el intérprete de PHP, lo que
permite que los ficheros de PHP tengan contenido mixto. Esto hace que PHP pueda ser embebido en
documentos HTML para, por ejemplo, crear plantillas.
Este ejemplo funciona como estaba previsto, porque cuando PHP intercepta las etiquetas de cierre ?>,
simplemente comienza a imprimir cualquier cosa que encuentre hasta que dé con otra etiqueta de apertura
a menos que se encuentre en mitad de una sentencia condicional, en cuyo caso el intérprete determinará el
resultado de la condición antes de tomar una decisión de qué es lo que tiene que saltar.
En este ejemplo, PHP saltará los bloques donde la condición no se cumpla, incluso si están fuera de las
etiquetas de apertura/cierre de PHP, los saltará según la condición debido a que el intérprete salta los
bloques contenidos dentro de una condición que no se cumpla.
Para imprimir bloques de texto grandes, es más eficiente abandonar el modo intérprete de PHP que enviar
todo el texto a través de echo o print.
Como en C o en Perl, PHP requiere que las instrucciones terminen en punto y coma al final de cada sentencia.
La etiqueta de cierre de un bloque de código de PHP automáticamente implica un punto y coma; no es
necesario usar un punto y coma para cerrar la última línea de un bloque de PHP. La etiqueta de cierre del
bloque incluirá la nueva línea final inmediata si está presente.
<?php
echo 'Esto es una prueba';
?>
1.1.4 Comentarios
PHP admite comentarios al estilo de C, C++ y de consola de Unix (estilo de Perl). Por ejemplo:
echo 'Esto es una prueba'; // Comentario estilo de c++ de una sola línea
echo 'Una prueba final'; # Comentario al estilo de consola de una sola línea
Los comentarios al estilo de "una sola línea" solo comentan hasta el final de la línea o del bloque actual de
código de PHP, lo primero que suceda. Esto implica que el código HTML después de // ... ?> o # ... ?> será
impreso: ?> sale del modo PHP y vuelve al modo HTML.
Los comentarios al estilo de C finalizan con el primer */ que se encuentre. Asegúrese de no anidar
comentarios al estilo de C. Es muy fácil cometer este error cuando se intenta comentar un bloque grande de
código.
/*
echo 'Esto es una prueba'; /* Este comentario causará un problema*/
*/
1.2. Tipos
1.2.1 Booleanos
Este es el tipo más simple. Un boolean expresa un valor que indica verdad. Puede ser TRUE (verdadero) o
FALSE (falso).
Para especificar un literal de tipo boolean se emplean las constantes TRUE o FALSE. Ambas no son
susceptibles a mayúsculas y minúsculas.
Normalmente, el resultado de un operador que devuelve un valor de tipo boolean es pasado a una estructura
de control.
En el siguiente ejemplo el operador == compara el valor de la variable variable $version con una constante
1.23, si son iguales devuelve TRUE:
$mostrar_separadores = TRUE;
if ($mostrar_separadores == TRUE) {
echo "<hr>\n";
}
El siguiente ejemplo es igual que el anterior, más simplificado, sin usar el operador ==:
$mostrar_separadors = TRUE
if ($mostrar_separadores) {
echo "<hr>\n";
}
Para convertir explícitamente un valor al tipo boolean, use los amoldamientos (bool) o (boolean). Sin
embargo, en la mayoría de casos es innecesario el amoldamiento, ya que un valor será convertido
automáticamente si un operador, función o estructura de control requiere un argumento de tipo boolean.
Cualquier otro valor se considera como TRUE. -1 se considera TRUE, como cualquier otro número distinto de
cero (ya sea negativo o positivo).
El método var_dump muestra información acerca de una variable. El siguiente ejemplo muestra información
de las variables $b y $c:
$b = 3.1;
$c = true;
var_dump($b, $c);
float(3.1)
bool(true)
Un número entero (o integer) es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.
Si PHP encuentra un número fuera de los límites de un integer, se interpretará en su lugar como un valor de
tipo float. También, una operación cuyo resultado sea un número fuera de los límites de un integer devolverá
en su lugar un valor de tipo float.
$numero_grande = 9223372036854775807;
var_dump($numero_grande); // int(9223372036854775807)
$numero_grande = 9223372036854775808;
var_dump($numero_grande); // float(9.2233720368548E+18)
Para convertir explícitamente un valor al tipo integer se puede emplear los amoldamientos (int) como
(integer). Sin embargo, la mayoría de las veces la conversión no es necesaria, ya que un valor es convertido
de forma automática cuando un operador, función o estructura de control requiera un argumento de tipo
integer.
Nota: Un valor también puede ser convertido al tipo integer mediante la función intval().
Un booleano a FALSE producirá 0 (cero), y un booleano TRUE producirá 1 (uno). Si convertimos un float a un
integer, el número será redondeado eliminando la parte decimal.
Los números de punto flotante (también conocidos como "de coma flotante" en español, y "floats" en inglés)
pueden ser especificados usando cualquiera de las siguientes sintaxis:
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
Nota: Algunas operaciones numéricas pueden resultar en un valor representado por la constante NAN. Este
resultado representa un valor no definido o no representable mediante cálculos de punto flotante.
Un string, o cadena, es una serie de caracteres donde cada carácter es lo mismo que un byte. Esto significa
que PHP solo admite un conjunto de 256 caracteres, y de ahí que no ofrezca soporte nativo para Unicode.
Véanse los detalles del tipo string. Un string puede llegar a alcanzar hasta 2 GB de tamaño (2147483647 bytes
máximo).
Ejemplo de definición de string utilizando entrecomillado simple en una línea y en múltiples líneas:
La característica más importante del entrecomillado doble de un string es el hecho de que se expanden los
nombres de las variables.
$val = 5;
echo “El valor de la variable val es $val”;
Los string pueden ser concatenados empleando el operador '.' (punto). Fíjese que el operador '+' (suma) no
servirá para concatenar.
Mi nombre es Pedro.
1.2.5 Arrays
Un array en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia valores con
claves. Este tipo se optimiza para varios usos diferentes; se puede emplear como un array, lista (vector), tabla
asociativa (tabla hash - una implementación de un mapa), diccionario, colección, pila, cola, y posiblemente
más. Ya que los valores de un array pueden ser otros arrays, también son posibles árboles y arrays
multidimensionales.
$array = (
"foo" => "bar",
"bar" => "foo",
);
print_r($array);
La clave puede ser un integer o un string. El valor puede ser de cualquier tipo.
Para recorrer un array en forma de hash se utiliza la sentencia foreach de la siguiente manera:
Ejemplo de un array unidimensional, para recorrer el array también se utiliza la sentencia foreach:
1.2.6 Iterables
Iterable es un seudotipo introducido en PHP 7.1. Acepta cualquier array u objeto que implemente la interfaz
Traversable. Estos dos tipos se recorren con foreach.
Iterable se puede usar como tipo de parámetro para indicar que una función requiere un conjunto de valores,
pero que no importa la forma del dicho conjunto ya que se utilizará con foreach. Si un valor no es un array o
una instancia de Traversable, se lanzará un TypeError.
1.2.7 Objetos
Para crear un nuevo object, utilice la sentencia new para instanciar una clase:
class foo
{
function hacer_algo()
{
echo "Haciendo algo.";
}
}
Nota: Se dará una descripción más completa de Clases y Objetos en el siguiente tema.
1.2.8 Nulo
El valor especial NULL representa una variable sin valor. NULL es el único valor posible del tipo null.
$var = NULL;
$variable = NULL;
if (is_null($variable)) {
…
}
else {
…
}
$variable1 = "valor1";
$variable2 = "valor2";
$variable3 = "valor3";
var_dump ($variable1, $variable2, $variable3);
1.3. Variables
En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre
de la variable es sensible a minúsculas y mayúsculas.
Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido
tiene que empezar con una letra o un carácter de subrayado (underscore), seguido de cualquier número de
letras, números y caracteres de subrayado. Como expresión regular se podría expresar como: '[a-zA-Z_\x7f-
\xff][a-zA-Z0-9_\x7f-\xff]*'
$var = 'Roberto';
$Var = 'Juan';
echo "$var, $Var"; // imprime "Roberto, Juan"
PHP también ofrece otra forma de asignar valores a las variables: asignar por referencia. Esto significa que la
nueva variable simplemente referencia (en otras palabras, "se convierte en un alias de" ó "apunta a") la
variable original. Los cambios a la nueva variable afectan a la original, y viceversa.
Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable
cuyo valor se está asignando (la variable fuente).
Mi nombre es Bob
El ámbito de una variable es el contexto dentro del que la variable está definida. La mayor parte de las
variables PHP sólo tienen un ámbito simple. Este ámbito simple también abarca los ficheros incluídos y los
requeridos. Por ejemplo:
$a = 1;
include 'b.inc';
Aquí, la variable $a estará disponible al interior del script incluido b.inc. Sin embargo, al interior de las
funciones definidas por el usuario se introduce un ámbito local a la función. Cualquier variable usada dentro
de una función está, por omisión, limitada al ámbito local de la función. Por ejemplo:
$a = 1; /* ámbito global */
function test()
{
echo $a; /* referencia a una variable del ámbito local */
}
test();
Este script no producirá salida, ya que la sentencia echo utiliza una versión local de la variable $a, a la que no
se ha asignado ningún valor en su ámbito.
En PHP, dentro de una función, solamente existen las variables que hayamos creado dentro de la función. En
PHP, las variables declaradas externamente a una función son globales y las creadas en una función son
locales. No obstante, PHP permite especificar las variables que están declaradas fuera de la función y que
queremos usar dentro de la misma utilizando la palabra global, de esa manera, las variables estarán
disponibles para su uso dentro de la función:
$a = 1;
$b = 2;
function Suma()
{
global $a, $b;
$b = $a + $b;
}
Suma();
echo $b;
?>
El script anterior producirá la salida 3. Al declarar $a y $b globales dentro de la función, todas las referencias
a tales variables se referirán a la versión global. No hay límite al número de variables globales que se pueden
manipular dentro de una función.
Otra característica importante del ámbito de las variables es la variable estática. Una variable estática existe
sólo en el ámbito local de la función, pero no pierde su valor cuando la ejecución del programa abandona
este ámbito. Consideremos el siguiente ejemplo:
function test()
{
$a = 0;
echo $a;
$a++;
}
Esta función tiene poca utilidad ya que cada vez que es llamada asigna a $a el valor 0 e imprime un 0. La
sentencia $a++, que incrementa la variable, no sirve para nada, ya que en cuanto la función finaliza, la
variable $a desaparece. Para hacer una función útil para contar, que no pierda la pista del valor actual del
conteo, la variable $a debe declararse como estática:
function test()
{
static $a = 0;
echo $a;
$a++;
}
Ahora, $a se inicializa únicamente en la primera llamada a la función, y cada vez que la función test() es
llamada, imprimirá el valor de $a y lo incrementa.
A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables
que se pueden definir y usar dinámicamente. Una variable normal se establece con una sentencia como:
$a = 'hola';
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo
anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dólar. Es decir:
$$a = 'mundo';
En este momento se han definido y almacenado dos variables en el árbol de símbolos de PHP: $a, que
contiene "hola", y $hola, que contiene "mundo".
Cuando se envía un formulario a un script de PHP, la información de dicho formulario pasa a estar
automáticamente disponible en el script. Existen algunas formas de acceder a esta información, por ejemplo:
A partir de PHP 5.4.0, solamente existen dos maneras de acceder a datos desde formularios HTML. Los
métodos disponibles actualmente se enumeran a continuación:
Acceso a datos de un formulario HTML sencillo con POST desde el fichero foo.php:
echo $_POST['username'];
echo $_POST['email'];
Acceso a datos de un formulario HTML sencillo con GET desde el fichero foo.php:
echo $_GET['username'];
echo $_GET['email'];
Sin texto
1.4. Constantes
Se puede definir una constante usando la función define() o con la palabra reservada const fuera de la
definición de una clase a partir PHP 5.3.0. Una vez que la constante está definida, no puede ser cambiada o
redifinida.
Antes de PHP 5.6, al emplear la palabra reservada const, solamente los datos escalares (boolean, integer,
float y string) pueder estar contenidos en constante. Desde PHP 5.6 en adelante, es posible definir una
constante como una expresión escalar, y también es posible definir un array constante.
Para obtener el valor de una constante solo es necesario especificar su nombre. A diferencia de las variables,
no se debe prefijar una constante con el signo $.
Ejemplo de definición de constantes usando la función const (funciona a partir de PHP 5.3.0):
define('ANIMALES', array(
'perro',
'gato',
'pájaro'
));
Nota: A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave const
deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución.
Esto significa que no pueden declararse dentro de funciones, bucles, sentencias if o bloques try/ catch.
PHP ofrece un gran número de constantes predefinidas a cualquier script en ejecución. Muchas de estas
constantes, sin embargo, son creadas por diferentes extensiones, y sólo estarán presentes si dichas
extensiones están disponibles, bien por carga dinámica o porque han sido compiladas.
Hay nueve constantes mágicas que cambian dependiendo de dónde se emplean. Por ejemplo, el valor de
__LINE__ depende de la línea en que se use en el script. Estas constantes especiales son sensibles a
mayúsculas.
Nombre Descripción
__LINE__ El número de la línea actual del fichero.
__FILE__ Ruta completa y nombre del fichero con enlaces simbólicos resueltos. Si se usa dentro
de un include, devolverá el nombre del fichero incluido.
__DIR__ Directorio del fichero. Si se utiliza dentro de un include, devolverá el directorio de
fichero incluido. Esta constante es igual que dirname(__FILE__). El nombre del
directorio no lleva la barra final a no ser que esté en el directorio root.
__FUNCTION__ Nombre de la función.
__CLASS__ Nombre de la clase. El nombre de la clase incluye el namespace declarado.
__TRAIT__ El nombre del trait. El nombre del trait incluye el espacio de nombres en el que fue
declarado.
__METHOD__ Nombre del método de la clase.
__NAMESPACE__ Nombre del espacio de nombres actual.
ClassName::class El nombre de clase completamente cualificado.
La precedencia de un operador indica qué tan "estrechamente" se unen dos expresiones juntas. Por ejemplo,
en la expresión 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador de multiplicación ("*") tiene una
precedencia mayor que el operador de adición ("+"). Los paréntesis pueden ser usados para forzar la
precedencia, si es necesario. Por ejemplo: (1 + 5) * 3 se evalúa como 18.
Cuando los operadores tienen igual precedencia su asociatividad decide cómo se agrupan. Por ejemplo "-"
tiene asociatividad a izquierda, así 1 - 2 - 3 se agrupa como (1 - 2) - 3 y se evalúa a -4. "=", por otra parte,
tiene asociatividad a derecha, así $a = $b = $c se agrupa como $a = ($b = $c).
Los operadores de igual precedencia que no son asociativos no pueden usarse unos junto a otros, por
ejemplo, 1 < 2 > 1 es ilegal en PHP.
El uso de paréntesis, incluso cuando no es estrictamente necesario, a menudo puede aumentar la legibilidad
del código haciendo grupos explícitamente en lugar de confiar en la precedencia y asociatividad implícitas
del operador.
La siguiente tabla enumera los operadores en orden de precedencia, con los de más alta precedencia al inicio.
Los operadores en la misma línea tienen igual precedencia, en cuyo caso la asociatividad decide el
agrupamiento.
Ejemplo de asociatividad:
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
// la asociatividad del operador ternario difiere de C/C++
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
La precedencia y asociatividad de los operadores solamente determinan cómo se agrupan las expresiones,
no especifican un orden de evaluación. PHP no especifica (en general) el orden en que se evalúa una
expresión y se debería evitar el código que se asume un orden específico de evaluación, ya que el
comportamiento puede cambiar entre versiones de PHP o dependiendo de código circundante.
$a = 1;
$i = 1;
$array[$i] = $i++; // podría establecer el índice a 1 o 2
El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean integers (o
strings que se conviertan a integers) y los números sean divisibles, en cuyo caso será devuelto un valor
integer.
El resultado del operador módulo % tiene el mismo signo que el dividendo, es decir, el resultado de $a % $b
tendrá el mismo signo que $a. Por ejemplo:
El operador básico de asignación es "=". Se podría inclinar a pensar primero que es como un "igual a". No lo
es. Realmente significa que el operando de la izquierda se establece con el valor de la expresión de la derecha
(es decir, "se define como").
El valor de una expresión de asignación es el valor asignado. Es decir, el valor de "$a = 3" es de 3:
Además del operador básico de asignación, existen «operadores combinados» para todos los de aritmética
binaria, unión de arrays y operadores de strings que permiten usar un valor en una expresión y entonces
establecer su valor como el resultado de esa expresión. Por ejemplo:
$a = 3;
$a += 5; // establece $a en 8, como si se hubiera dicho: $a = $a + 5;
$b = "Hola ";
$b .= "ahí!"; // establece $b en "Hola ahí!", al igual que $b = $b . "ahí!";
Los operadores de comparación, como su nombre indica, permiten comparar dos valores:
$a = 3;
$b = 9;
$result = ($a <= 3 and $b <> 9);
if ( $result == true) {
echo "Se cumple la condición";
}else {
echo "No se cumple la condición";
}
No se cumple la condición
Nota: Los operadores de incremento/decremento solamente afectan a números y strings. Los arrays, objects
y resources no se ven afectados. Decrementar valores NULL tampoco tiene efecto, pero incrementarlos
entonces resulta en 1.
Todo script PHP está construido según una serie de sentencias. Una sentencia puede ser una asignación, una
llamada de función, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una
sentencia vacía). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias
pueden agruparse en un conjunto de sentencias, encapsulándolas entre corchetes.
El constructor if es una de las características más importantes de muchos lenguajes, incluido PHP. Permite la
ejecución condicional de fragmentos de código. PHP dispone de una estructura if que es similar a la de C:
if (expr)
El siguiente ejemplo mostraría a es mayor que b si $a es mayor que $b y entonces asignaría el valor de $a a
$b:
Las sentencias if pueden anidarse dentro de otras sentencias if infinitamente, lo cual provee completa
flexibilidad para la ejecución condicional de diferentes partes del programa.
Con frecuencia se desea ejecutar una sentencia si una determinada condición se cumple y una sentencia
diferente si la condición no se cumple. Esto es para lo que sirve else. El else extiende una sentencia if para
ejecutar una sentencia en caso que la expresión en la sentencia if se evalúe como FALSE. Por ejemplo, el
siguiente código deberá mostrar “a es mayor que b” si $a es mayor que $b y a “NO es mayor que b” en el
caso contrario:
elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una
sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE.
Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del
elseif se evalúa como TRUE. Por ejemplo, el siguiente código debe mostrar “a es mayor que b”, “a es igual
que b” o “a es menor que b”:
Puede haber varios elseif dentro de la misma sentencia if. La primera expresión elseif (si hay alguna) que se
evalúe como TRUE sería ejecutada. En PHP también se puede escribir 'else if' (en dos palabras) y el
comportamiento sería idéntico al de 'elseif' (en una sola palabra).
1.6.2 while
Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La
forma básica de una sentencia while es:
while (expr)
sentencia
El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como
la expresión while se evalúe como TRUE. El valor de la expresión es verificado cada vez al inicio del bucle, por
lo que incluso si este valor cambia durante la ejecución de las sentencias anidadas, la ejecución no se
detendrá hasta el final de la iteración (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una
iteración). A veces, si la expresión while se evalúa como FALSE desde el principio, las sentencias anidadas no
se ejecutarán ni siquiera una vez.
Al igual que con la sentencia if, se pueden agrupar varias instrucciones dentro del mismo bucle while
rodeando un grupo de sentencias con corchetes, o utilizando la sintaxis alternativa:
while (expr):
sentencias
...
endwhile;
Los siguientes ejemplos son idénticos y ambos presentan los números del 1 al 10:
$i = 1;
while ($i <= 10) {
echo $i++;
}
1.6.3 do-while
Los bucles do-while son muy similares a los bucles while, excepto que la expresión verdadera es verificada al
final de cada iteración en lugar que al principio. La diferencia principal con los bucles while es que está
garantizado que corra la primera iteración de un bucle do-while (la expresión verdadera sólo es verificada al
final de la iteración), mientras que no necesariamente va a correr con un bucle while regular (la expresión
verdadera es verificada al principio de cada iteración, si se evalúa como FALSE justo desde el comienzo, la
ejecución del bucle terminaría inmediatamente).
$i = 0;
do {
echo $i;
} while ($i > 0);
El bucle de arriba se ejecutaría exactamente una sola vez, ya que después de la primera iteración, cuando la
expresión verdadera es verificada, se evalúa como FALSE ($i no es mayor que 0) y termina la ejecución del
bucle.
1.6.4 For
Los bucles for son los más complejos en PHP. Se comportan como sus homólogos en C. La sintaxis de un bucle
for es:
La primera expresión (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del bucle.
En el comienzo de cada iteración, se evalúa expr2. Si se evalúa como TRUE, el bucle continúa y se ejecutan
las sentencias anidadas. Si se evalúa como FALSE, finaliza la ejecución del bucle.
Cada una de las expresiones puede estar vacía o contener múltiples expresiones separadas por comas. En
expr2, todas las expresiones separadas por una coma son evaluadas, pero el resultado se toma de la última
parte. Que expr2 esté vacía significa que el bucle debería ser corrido indefinidamente (PHP implícitamente
lo considera como TRUE, como en C). Esto puede no ser tan inútil como se pudiera pensar, ya que muchas
veces se debe terminar el bucle usando una sentencia condicional break en lugar de utilizar la expresión
verdadera del for.
Sin texto
Sin Texto