SlideShare una empresa de Scribd logo
1 de 26
Capítulo 3. Expresiones y Control de Flujo en
PHP
El capítulo anterior introdujo varios temas de paso que este capítulo cubre más completamente,
como hacer elecciones (ramificación) y crear expresiones complejas. En el capítulo anterior,
quería centrarme en la sintaxis y las operaciones más básicas de PHP, pero no pude evitar tocar
temas más avanzados. Ahora puedo completar los antecedentes que necesita para usar estas
potentes funciones de PHP correctamente.
En este capítulo, obtendrá una base sólida sobre cómo funciona la programación PHP en la
práctica y sobre cómo controlar el flujo del programa.
Expresiones
Comencemos con la parte más fundamental de cualquier lenguaje de programación: las
expresiones.
Una expresión es una combinación de valores, variables, operadores y funciones que da como
resultado un valor. Es familiar para cualquiera que haya tomado álgebra de escuela secundaria:
y = 3(abs(2x) + 4)
Que en PHP seria:
$y = 3 * (abs(2 * $x) + 4);
El valor devuelto (y, o $y en este caso) puede ser un número, una cadena o un valor booleano
(llamado así por George Boole, un matemático y filósofo inglés del siglo XIX). Por ahora,
debes estar familiarizado con los dos primeros tipos de valores, pero explicaré el tercero.
TRUE o FALSE (Verdadero o Falso)
Un valor booleano básico puede ser VERDADERO o FALSO. Por ejemplo, la expresión "20>
9" (20 es mayor que 9) es VERDADERO, y la expresión "5 == 6" (5 es igual a 6) es FALSA.
(Puede combinar operaciones booleanas usando operadores como AND, OR y XOR, que se
tratan más adelante en este capítulo).
El ejemplo 4-1 muestra algunas expresiones simples: las dos que acabo de mencionar, más un
par más. Para cada línea, imprime una letra entre a y d, seguida de dos puntos y el resultado de
las expresiones. La etiqueta <br> está allí para crear un salto de línea y así separar la salida en
cuatro líneas en HTML.
NOTA
Tenga en cuenta que estoy usando letras mayúsculas para los nombres VERDADERO y
FALSO. Esto se debe a que son constantes predefinidas en PHP. También puede usar las
versiones en minúsculas, si lo prefiere, ya que también están predefinidas. De hecho, las
versiones en minúsculas son más estables, porque PHP no te permite redefinirlas; las
mayúsculas pueden redefinirse, algo que debe tener en cuenta si importa código de terceros.
Ejemplo 4-1.Cuatro Expresiones Booleanas simple
<?php
echo "a: [" . (20 > 9) . "]<br>";
echo "b: [" . (5 == 6) . "]<br>";
echo "c: [" . (1 == 0) . "]<br>";
echo "d: [" . (1 == 1) . "]<br>";
?>
La salida de este codigo seria:
a: [1]
b: []
c: []
d: [1]
Observe que ambas expresiones a: y d: evalúan a TRUE, que tiene un valor de 1. Pero
b: y c :, que evalúan a FALSE, no muestran ningún valor, porque en PHP la constante
FALSE se define como NULL, o nada. Para verificar esto usted mismo, puede ingresar
el código en el Ejemplo 4-2.
Ejemplo 4-2. Valores de Salida de TRUE y FALSE
<?php // test2.php
echo "a: [" . TRUE . "]<br>";
echo "b: [" . FALSE . "]<br>";
?>
La salida seria:
a: [1]
b: []
Por cierto, en algunos lenguajes FALSE se puede definir como 0 o incluso -1, por lo
que vale la pena verificar su definición en cada lenguaje.
Literales y variables
La forma más simple de una expresión es un literal, que simplemente significa algo que
se evalúa a sí mismo, como el número 73 o la cadena "Hola". Una expresión también
podría ser simplemente una variable, que evalúa el valor que se le ha asignado. Ambos
son tipos de expresiones, porque devuelven un valor.
NOTA
Ahora que estamos completamente en la era de HTML5, y XHTML ya no está
planeado para sustituir HTML, no es necesario utilizar la forma <br/> de cierre
automático de la etiqueta <br> ni ningún elemento vacío (unos sin etiquetas de
cierre), porque / es ahora opcional. Por lo tanto, he elegido usar el estilo más simple
en este libro. Si alguna vez creó etiquetas HTML no válidas de cierre automático
(como <div />), no funcionarán en HTML5 porque se ignorará / y deberá
reemplazarlas, por ejemplo, con <div>. .. </ div>. Sin embargo, aún debe usar la
forma <br/> de la sintaxis HTML al usar XHTML.
El ejemplo 4-3 muestra tres literales y dos variables, todos los cuales devuelven valores,
aunque de diferentes tipos.
Ejemplo 4-3. Literales y variables
<?php
$myname = "Brian";
$myage = 37;
echo "a: " . 73 . "<br>"; // Numeric literal
echo "b: " . "Hello" . "<br>"; // String literal
echo "c: " . FALSE . "<br>"; // Constant literal
echo "d: " . $myname . "<br>"; // String variable
echo "e: " . $myage . "<br>"; // Numeric variable
?>
Y, como era de esperar, verá un valor de retorno de todos estos, con la excepción de c :,
que se evalúa como FALSE, y no devuelve nada en la siguiente salida
a: 73
b: Hello
c:
d: Brian
e: 37
Junto con los operadores, es posible crear expresiones más complejas que evalúen
resultados útiles.
Cuando combina construcciones de asignación o flujo de control con expresiones, el
resultado es una declaración. El ejemplo 4-4 muestra uno de cada uno. El primero
asigna el resultado de la expresión 366 - $day_number a la variable
$days_to_new_year, y el segundo genera un mensaje amistoso solo si la expresión
$days_to_new_year <30 se evalúa como TRUE.
Ejemplo 4-4.Una Expresion y una Declaraciòn
<?php
$days_to_new_year = 366 - $day_number; // Expression
if ($days_to_new_year < 30)
{
echo "Not long now till new year"; // Statement
}
?>
Operadores
PHP ofrece una gran cantidad de poderosos operadores que van desde la aritmética, la
cadena y los operadores lógicos hasta la asignación, comparación y más (consulte la
Tabla 4-1).
Table 4-1. PHP operator types
Operador Descripcion Ejemplo
Arithmetic Matematica Basica
$a + $b
Array Arreglo Union(Array unión)
$a + $b
Assignment Asignacion de Valores
$a = $b + 23
Bitwise Manipular bits dentro de Bytes
12 ^ 9
Comparison Comparar dos valores
$a < $b
Execution Ejecuta el contenido de los ticks de espalda
`ls -al`
Increment/decrement Añadir o sustraer
$a++
Logical Booleano
$a and $b
String Concatenacion
$a . $b
Cada operador toma un número diferente de operandos:
 Operadores unarios, como incrementos ($ a ++) o negación (- $ a), que toman
un solo operando.
 Operadores binarios, que representan la mayor parte de los operadores PHP,
incluida la suma, la resta, la multiplicación y la división.
 Un operador ternario, que toma la forma? x: y. Es una declaración sucinta, de
línea única if que elige entre dos expresiones, dependiendo del resultado de una
tercera.
Precedencia de Operadores
Si todos los operadores tuvieran la misma precedencia, se procesarían en el orden en
que se encuentran. De hecho, muchos operadores tienen la misma precedencia, así que
echemos un vistazo a algunos
Ejemplo 4-5.
Ejemplo 4-5. Tres expresionesequivalres
1 + 2 + 3 − 4 + 5
2 − 4 + 5 + 3 + 1
5 + 2 − 4 + 1 + 3
Aquí verá que, aunque se han movido los números (y sus operadores anteriores), el resultado de cada
expresión es el valor 7, porque los operadores más y menos tienen la misma precedencia. Podemos
intentar lo mismo con la multiplicación y la división (ver Ejemplo 4-6).
Ejemplo 4-6. Tres expresiones que son tambien equivalentes
1 * 2 * 3 / 4 * 5
2 / 4 * 5 * 3 * 1
5 * 2 / 4 * 1 * 3
Aquí el valor resultante es siempre 7.5. Pero las cosas cambian cuando mezclamos
operadores con diferentes precedencias en una expresión, como en el Ejemplo 4-7.
Ejemplo 4-7. Tres expresiones usando operadores de precedencia mezclados
1 + 2 * 3 − 4 * 5
2 − 4 * 5 * 3 + 1
5 + 2 − 4 + 1 * 3
Si no hubiera precedencia de operador, estas tres expresiones evaluarían a 25, -29 y 12,
respectivamente. Pero debido a que la multiplicación y la división tienen prioridad sobre
la suma y la resta, hay paréntesis implícitos alrededor de estas partes de las expresiones,
que se verían como el Ejemplo 4-8 si fueran visibles.
Ejemplo 4-8. Tres expresiones monstrando parenthesis implicados
1 + (2 * 3) − (4 * 5)
2 − (4 * 5 * 3) + 1
5 + 2 − 4 + (1 * 3)
Claramente, PHP debe evaluar las subexpresiones entre paréntesis primero para derivar
las expresiones semi-completadas en el Ejemplo 4-9.
Ejemplo 4-9. Después de evaluar las subexpresiones entre paréntesis
1 + (6) − (20)
2 − (60) + 1
5 + 2 − 4 + (3)
Los resultados finales de estas expresiones son -13, -57 y 6, respectivamente (bastante
diferentes de los resultados de 25, -29 y 12 que hubiéramos visto si no hubiera habido
precedencia del operador).
Por supuesto, puede anular la precedencia predeterminada del operador insertando sus
propios paréntesis y forzando los resultados originales que hubiésemos visto si no
hubiera habido precedencia del operador (vea el Ejemplo 4-10).
Ejemplo 4-10. Forzando evaluacion de izquierda-derecha
((1 + 2) * 3 − 4) * 5
(2 − 4) * 5 * 3 + 1
(5 + 2 − 4 + 1) * 3
Con los paréntesis insertados correctamente, ahora vemos los valores 25, -29 y 12,
respectivamente.
La Tabla 4-2 enumera los operadores de PHP en orden de precedencia de mayor a
menor.
Table 4-2. la precedencia de los operadores de PHP (alto y bajo)
Operator(s) Type
()
Parentheses
++ −−
Increment/decrement
!
Logical
* / %
Arithmetic
+ − .
Arithmetic and string
<< >>
Bitwise
< <= > >= <>
Comparison
== != === !==
Comparison
&
Bitwise (and references)
^
Bitwise
|
Bitwise
&&
Logical
||
Logical
? :
Ternary
= += −= *= /= .= %= &= != ^= <<= >>=
Assignment
and
Logical
xor
Logical
or
Logical
Asociatividad
Hemos estado buscando expresiones de procesamiento de izquierda a derecha, excepto
donde la precedencia del operador está en efecto. Pero algunos operadores requieren un
procesamiento de derecha a izquierda, y esta dirección de procesamiento se denomina
asociatividad del operador. Para algunos operadores no hay asociatividad.
La asociatividad se vuelve importante en los casos en los que no se fuerza
explícitamente la precedencia, por lo que debe conocer las acciones predeterminadas de
los operadores, como se detalla en la Tabla 4-3, que enumera los operadores y su
asociatividad.
Table 4-3. Operator de Asociatividad
Operator Description Associativity
CLONE NEW
Create a new object None
< <= >= == != === !== <>
Comparison None
!
Logical NOT Right
~
Bitwise NOT Right
++ −−
Increment and decrement Right
(int)
Cast to an integer Right
(double) (float) (real)
Cast to a floating-point number Right
(string)
Cast to a string Right
(array)
Cast to an array Right
(object)
Cast to an object Right
@
Inhibit error reporting Right
= += −= *= /=
Assignment Right
.= %= &= |= ^= <<= >>=
Assignment Right
+
Addition and unary plus Left
−
Subtraction and negation Left
*
Multiplication Left
/
Division Left
%
Modulus Left
.
String concatenation Left
<< >> & ^ |
Bitwise Left
?:
Ternary Left
|| && and or xor
Logical Left
,
Separator Left
Por ejemplo, echemos un vistazo al operador de asignación en el Ejemplo 4-11, donde
tres variables están todas configuradas con el valor 0.
Ejemplo 4-11. Una declaración de multiple asignación
<?php
$level = $score = $time = 0;
?>
Operadores Relacionales
Los operadores relacionales prueban dos operandos y devuelven un resultado booleano
de VERDADERO o FALSO. Hay tres tipos de operadores relacionales: igualdad,
comparación y lógica.
Igualdad
Como ya nos hemos encontrado varias veces en este capítulo, el operador de igualdad es
== (dos signos iguales). Es importante no confundirlo con el operador de asignación =
(signo igual). En el ejemplo 4-12, la primera instrucción asigna un valor y la segunda
prueba la igualdad.
Ejemplo 4-12.Asigna un valor y prueba la iguialda
<?php
$month = "March";
if ($month == "March") echo "It's springtime";
?>
Como puede ver, al devolver VERDADERO o FALSO, el operador de igualdad le
permite probar condiciones usando, por ejemplo, una declaración if. Pero esa no es toda
la historia, porque PHP es un lenguaje poco tipado. Si los dos operandos de una
expresión de igualdad son de tipos diferentes, PHP los convertirá a cualquier tipo que
tenga más sentido para él.
Por ejemplo, cualquier cadena compuesta por números se convertirá en números
siempre que se compare con un número. En el ejemplo 4-13, $a y $b son dos cadenas
diferentes, por lo que no esperamos que ninguna de las instrucciones if genere un
resultado.
Example 4-13. The equality and identity operators
<?php
$a = "1000";
$b = "+1000";
if ($a == $b) echo "1";
if ($a === $b) echo "2";
?>
NOTA
Como principiante de PHP, debe evitar los peligros potenciales de la asociatividad del
operador anidando siempre sus subexpresiones entre paréntesis para forzar el orden de la
evaluación. Esto también ayudará a otros programadores que puedan tener que mantener su
código para comprender lo que está sucediendo.
Sin embargo, si ejecuta el ejemplo, verá que genera el número 1, lo que significa que la
primera sentencia if se evalúa como VERDADERO. Esto se debe a que ambas cadenas
se convirtieron primero en números, y 1000 es el mismo valor numérico que +1000.
Por el contrario, la segunda instrucción if usa el operador de identidad, tres signos
iguales en una fila, lo que impide que PHP convierta tipos automáticamente. $ a y $ b,
por lo tanto, se comparan como cadenas y ahora se encuentran diferentes, por lo que no
se genera nada.
Al igual que con forzar la precedencia del operador, siempre que tenga alguna duda
sobre cómo PHP convertirá los tipos de operandos, puede usar el operador de identidad
para desactivar este comportamiento.
De la misma manera que puede usar el operador de igualdad para probar si los
operandos son iguales, puede probar que no son iguales usando! =, El operador de
desigualdad. Eche un vistazo al Ejemplo 4-14, que es una reescritura del Ejemplo 4-13
en el cual los operadores de igualdad e identidad han sido reemplazados por sus
inversas.
Ejemplo 4-14. La desigualdad y operadores no identicos
<?php
$a = "1000";
$b = "+1000";
if ($a != $b) echo "1";
if ($a !== $b) echo "2";
?>
Y, como era de esperar, la primera instrucción if no genera el número 1, porque el
código pregunta si $a y $b no son iguales entre sí numéricamente.
En su lugar, emite el número 2, porque la segunda instrucción if pregunta si $a y $b no
son idénticos entre sí en sus tipos de operandos actuales, y la respuesta es
VERDADERO; Ellos no son los mismos.
Operadores de Comparación
Al usar operadores de comparación, puede probar algo más que igualdad y desigualdad.
PHP también le proporciona> (es mayor que), <(es menor que),> = (es mayor o igual
que), y <= (es menor o igual que) para jugar. El ejemplo 4-15 muestra estos operadores
en uso.
Ejemplo 4-15. Los 4 operadores de comparación
<?php
$a = 2; $b = 3;
if ($a > $b) echo "$a is greater than $b<br>";
if ($a < $b) echo "$a is less than $b<br>";
if ($a >= $b) echo "$a is greater than or equal to $b<br>";
if ($a <= $b) echo "$a is less than or equal to $b<br>";
?>
En este Ejemplo, donde $a is 2 and $b is 3, la salida es la siguiente:
2 is less than 3
2 is less than or equal to 3
Pruebe este ejemplo usted mismo, alterando los valores de $ a y $ b, para ver los
resultados. Intente configurarlos con el mismo valor y vea qué sucede.
Operadores Logicos
Los operadores lógicos producen resultados verdaderos o falsos, y por lo tanto también
se conocen como operadores booleanos. Hay cuatro de ellos (ver Tabla 4-4).
Tabla 4-4. Los operadores Logicos
Logical operator Description
AND TRUE si ambos operadors son TRUE
OR TRUE si alguno de los operado es TRUE
XOR TRUE si uno de los los dos operadores es TRUE
NOT TRUE si el operandos is FALSE, o FALSE alguno de los operadores es TRUE
Puede ver estos operadores utilizados en el Ejemplo 4-16. Tenga en cuenta que el
símbolo ! es requerido por PHP en lugar de la palabra NOT. Además, los operadores
pueden ser mayúsculas o minúsculas.
Ejemplo 4-16. Los operadores lógicos en uso
<?php
$a = 1; $b = 0;
echo ($a AND $b) . "<br>";
echo ($a or $b) . "<br>";
echo ($a XOR $b) . "<br>";
echo !$a . "<br>";
?>
Este ejemplo genera NULL, 1, 1, NULL, lo que significa que solo la segunda y tercera
declaraciones de eco se evalúan como TRUE. (Recuerde que NULL -o nada- representa
un valor de FALSE). Esto se debe a que la instrucción AND requiere que ambos
operandos sean TRUE si va a devolver un valor de TRUE, mientras que la cuarta
instrucción realiza un NOT sobre el valor de $ a, convirtiéndolo de VERDADERO (un
valor de 1) en FALSO. Si desea experimentar con esto, pruebe el código, dando $ a y $
b variando los valores de 1 y 0.
NOTA
Al codificar, recuerde tener en cuenta que AND y OR tienen una prioridad menor que las
otras versiones de los operadores, && y ||. En expresiones complejas, puede ser más seguro
usar && y || por esta razón.
El operador OR puede causar problemas involuntarios en las sentencias if, porque el
segundo operando no se evaluará si el primero se evalúa como VERDADERO. En el
ejemplo 4-17, nunca se llamará a la función getnext si $ finished tiene un valor de 1.
Example 4-17. Una declaracion usando el operador OR
<?php
if ($finished == 1 OR getnext() == 1) exit;
?>
Si necesita invocar getnext para cada enunciado if, puede volver a escribir el código
como se ha hecho en el Ejemplo 4-18.
Ejemplo 4-18. La declaración “if ... OR” ha sido modificada para asegurarse la
llamada getnext
<?php
$gn = getnext();
if ($finished == 1 OR $gn == 1) exit;
?>
En este caso, el código en la función getnext se ejecutará y el valor devuelto se
almacenará en $ gn antes de la instrucción if.
La Tabla 4-5 muestra todas las posibles variaciones del uso de los operadores lógicos.
También debe tener en cuenta que! TRUE equivale a FALSE y! FALSE equivale a
TRUE.
Table 4-5. All possible PHP logical expressions
Operators and results
a b AND OR XOR
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE
Condicionales
Los condicionales alteran el flujo del programa. Le permiten hacer preguntas sobre
ciertas cosas y responder a las respuestas que recibe de diferentes maneras. Los
condicionales son fundamentales para las páginas web dinámicas, el objetivo de usar
PHP en primer lugar, porque facilitan la creación de resultados diferentes cada vez que
se visita una página.
NOTA
Otra solución es simplemente cambiar las dos cláusulas para asegurarse de que se ejecuta
getnext, ya que aparecerá primero en la expresión.
Hay tres tipos de condicionales sin bucle: la instrucción if, la instrucción switch y el
operador ?. Al no hacer bucles, me refiero a que las acciones iniciadas por la
declaración tienen lugar y el flujo del programa se mueve, mientras que los
condicionales de bucle (que veremos en breve) ejecutan código una y otra vez hasta que
se cumple una condición.
La Declaración IF
Una forma de pensar sobre el flujo de programas es imaginarlo como una carretera de
un solo carril con la que conduzca. Es casi una línea recta, pero de vez en cuando te
encuentras con varias señales que te dicen a dónde ir.
En el caso de un enunciado if, podría imaginar una señal de desvío que debe seguir si
cierta condición es VERDADERA. Si es así, conduzca y siga el desvío hasta que
regrese a donde comenzó y luego continúe su camino en su dirección original. O, si la
condición no es VERDADERO, ignora el desvío y continúa conduciendo (consulte la
Figura 4-1).
El contenido de la condición if puede ser cualquier expresión válida de PHP, incluida la
igualdad, la comparación, las pruebas de 0 y NULL, e incluso los valores devueltos por
las funciones (ya sean funciones incorporadas o las que usted escribe).
Las acciones a tomar cuando una condición if es VERDADERO generalmente se
colocan dentro de las llaves, {}. Sin embargo, puede ignorar las llaves si solo tiene una
declaración para ejecutar. Pero si siempre usa llaves, evitará tener que buscar errores
difíciles de rastrear, como cuando agrega una línea adicional a una condición y no se
evalúa debido a la falta de llaves. (Tenga en cuenta que, por razones de espacio y
claridad, muchos de los ejemplos de este libro ignoran esta sugerencia y omiten las
llaves de declaraciones simples).
En el ejemplo 4-19, imagina que es el final del mes y todas tus facturas han sido
pagadas, por lo que estás realizando un mantenimiento de la cuenta bancaria.
Ejemplo 4-19. Una Declaraciòn IF con llaves
<?php
if ($bank_balance < 100)
{
$money = 1000;
$bank_balance += $money;
}
?>
En este ejemplo, está verificando su saldo para ver si es menos de $ 100 (o lo que sea
que sea su moneda). Si es así, te pagas $ 1,000 y luego lo agregas al saldo. (¡Si solo
ganar dinero fuera así de simple!)
Si el saldo bancario es de $ 100 o más, las declaraciones condicionales se ignoran y el
flujo del programa salta a la siguiente línea (no se muestra).
En este libro, la apertura de llaves generalmente comienza en una nueva línea. A
algunas personas les gusta colocar la primera llave a la derecha de la expresión
condicional; otros comienzan una nueva línea con eso. Cualquiera de estos está bien,
porque PHP le permite establecer sus caracteres en espacios en blanco (espacios, nuevas
líneas y pestañas) de la forma que elija. Sin embargo, encontrará que su código es más
fácil de leer y depurar si aplica sangría a cada nivel de condicionales con una pestaña.
La Declaraciòn Else
A veces, cuando un condicional no es VERDADERO, es posible que no desee continuar
con el código del programa principal de inmediato, sino que quizás desee hacer otra
cosa. Aquí es donde entra la declaración else. Con ella, puede establecer un segundo
desvío en su carretera, como se muestra en la Figura 4-2.
Con una instrucción if ... else, la primera instrucción condicional se ejecuta si la
condición es TRUE. Pero si es FALSO, el segundo se ejecuta. Una de las dos opciones
debe ser ejecutada. Bajo ninguna circunstancia se pueden ejecutar ambos (o ninguno).
El ejemplo 4-20 muestra el uso de la estructura if ... else.
Ejemplo 4-20. Un Declaraciòn if … else entre corchetes
<?php
if ($bank_balance < 100)
{
$money = 1000;
$bank_balance += $money;
}
else
{
$savings += 50;
$bank_balance −= 50;
}
?>
En este ejemplo, ahora que se ha cerciorado de que tiene $ 100 o más en el banco, se
ejecuta la declaración else, mediante la cual coloca parte de este dinero en su cuenta de
ahorros.
Al igual que con las declaraciones if, si su else tiene solo una declaración condicional,
puede optar por omitir las llaves. (Sin embargo, las llaves se recomiendan siempre.
Primero, hacen que el código sea más fácil de entender. En segundo lugar, le permiten
agregar más declaraciones fácilmente a la sucursal más adelante).
La Declaraciòn Elseif
También hay momentos en los que desea que ocurran varias posibilidades diferentes,
según una secuencia de condiciones. Puede lograr esto usando la instrucción elseif.
Como se puede imaginar, es como una declaración else, excepto que coloca una
expresión condicional adicional antes del código condicional. En el ejemplo 4-21, puede
ver un constructo if ... elseif ... else completo.
Example 4-21. An if ... elseif ... else statement with curly braces
<?php
if ($bank_balance < 100)
{
$money = 1000;
$bank_balance += $money;
}
elseif ($bank_balance > 200)
{
$savings += 100;
$bank_balance −= 100;
}
else
{
$savings += 50;
$bank_balance −= 50;
}
?>
En el ejemplo, se ha insertado una instrucción elseif entre las sentencias if y else.
Comprueba si su saldo bancario supera los $ 200 y, de ser así, decide que puede
permitirse ahorrar $ 100 de este mes.
Aunque estoy empezando a estirar la metáfora un poco demasiado lejos, puede
imaginarse esto como un conjunto de desvíos múltiples (vea la Figura 4-3).
Puede tener tantas declaraciones elseif como desee. Pero a medida que aumenta el
número de declaraciones elseif, probablemente sería mejor que considere una
declaración de cambio si se ajusta a sus necesidades. Veremos eso a continuación.
La Declaración SWITCH
La instrucción switch es útil en casos en los que una variable o el resultado de una
expresión puede tener múltiples valores, que cada uno debe activar una función
diferente.
Por ejemplo, considere un sistema de menú basado en PHP que pasa una sola cadena al
código del menú principal de acuerdo con lo que el usuario solicite. Digamos que las
opciones son Inicio, Acerca de, Noticias, Inicio de sesión y Enlaces, y establecemos la
variable $ page en una de ellas, de acuerdo con la entrada del usuario.
NOTA
una instrucción else cierra una instrucción if ... else o if ... elseif ... else. Puede omitir un
último elemento si no es necesario, pero no puede tener uno antes de else else; tampoco
puedes tener un elseif antes de una declaración if.
Si escribimos el código para esto usando if ... elseif ... else, podría parecerse al Ejemplo
4-22.
Ejemplo 4-22. Declaración multiple lineas if ...elseif ...
<?php
if ($page == "Home") echo "You selected Home";
elseif ($page == "About") echo "You selected About";
elseif ($page == "News") echo "You selected News";
elseif ($page == "Login") echo "You selected Login";
elseif ($page == "Links") echo "You selected Links";
?>
Si usamos la declaracion switch elcodigo quedaria de esta manera como el Ejemplo
4-23.
Ejemplo 4-23. Una Declaracion switch
<?php
switch ($page)
{
case "Home":
echo "You selected Home";
break;
case "About":
echo "You selected About";
break;
case "News":
echo "You selected News";
break;
case "Login":
echo "You selected Login";
break;
case "Links":
echo "You selected Links";
break;
}
?>
Como puede ver, $page se menciona solo una vez al comienzo de la instrucción switch.
A partir de entonces, el comando de caso busca coincidencias. Cuando ocurre uno, se
ejecuta la declaración condicional coincidente. Por supuesto, en un programa real
tendría aquí el código para mostrar o saltar a una página, en lugar de simplemente
decirle al usuario lo que se seleccionó.
Con la instruccion switch, no usa llaves dentro de los comandos de caso. En cambio,
comienzan con dos puntos y terminan con la declaración de interrupción. Sin embargo,
la lista completa de casos en la declaración switch está encerrada en un conjunto de
llaves.
Breaking out (Rompiendo)
Si desea salir de la instrucción switch porque se ha cumplido una condición, use el comando
break. Este comando le dice a PHP que salga del ciclo switch y salte a la siguiente declaración.
Si deja fuera los comandos de pausa en el Ejemplo 4-23 y el caso de Inicio evaluado como
VERDADERO, entonces se ejecutarán los cinco casos. O si $page tenía el valor News, todos
los comandos de casos a partir de ese momento se ejecutarían. Esto es deliberado y permite
cierta programación avanzada, pero en general siempre debe recordar emitir un comando de
interrupción cada vez que un conjunto de condicionales de la caja ha terminado de ejecutarse.
De hecho, omitir la declaración de interrupción es un error común
Default Action (Acción por defecto)
Un requisito típico en las sentencias switch es recurrir a una acción predeterminada si
no se cumple ninguna de las condiciones del caso. Por ejemplo, en el caso del código de
menú en el Ejemplo 4-23, puede agregar que se cumplen las condiciones. Por ejemplo,
en el caso del código de menú en el Ejemplo 4-23, puede agregar el código en el
Ejemplo 4-24 inmediatamente antes del corchete final.
Ejemplo 4-24. Una unstruccion pordefecto para agregaral ejemplo 4-23
default:
echo "Unrecognized selection";
break;
Aunque aquí no se requiere un comando break porque el valor predeterminado es la
subdeclaración final, y el flujo del programa continuará automáticamente hasta la llave
de cierre, si decide colocar la instrucción predeterminada más arriba, definitivamente
necesitaría un comando break para evitar el programa fluye de caer en las siguientes
afirmaciones. Generalmente, la práctica más segura es incluir siempre el comando
break.
Sintaxis Alternativa
Si lo prefiere, puede reemplazar la primera llave con un solo punto y la llave con un
comando de interrupciónl, como en el Ejemplo 4-25. Sin embargo, este enfoque no se
usa comúnmente y se menciona aquí solo en caso de que lo encuentre en un código de
terceros.
Ejemplo 4-25. Syntaxis alterna del commando
<?php
switch ($page):
case "Home":
echo "You selected Home";
break;
// etc...
case "Links":
echo "You selected Links";
break;
endswitch;
?>
El Operador ?
Una forma de evitar la verbosidad de las declaraciones if y else es usar el operador
ternario más compacto,?, Lo cual es inusual ya que requiere tres operandos en lugar de
los dos típicos.
Brevemente nos encontramos con esto en el Capítulo 3 en la discusión sobre la
diferencia entre las instrucciones de impresión y echo como un ejemplo de un tipo de
operador que funciona bien con impresión pero no con echo.
Los ? al operador se le pasa una expresión que debe evaluar, junto con dos instrucciones
para ejecutar: una para cuando la expresión se evalúa como VERDADERO, la otra para
cuando es FALSA. El ejemplo 4-26 muestra un código que podríamos usar para escribir
una advertencia sobre el nivel de combustible de un automóvil en su tablero digital.
Ejemplo 4-26. Usando el operador ?
<?php
echo $fuel <= 1 ? "Fill tank now" : "There's enough fuel";
?>
En esta declaración, si hay un galón o menos de combustible (es decir, si $fuel está
configurado a 1 o menos), el tanque de relleno de cuerda ahora se devuelve a la
declaración de echo precedente. De lo contrario, la cadena Se devuelve suficiente
combustible. También puede asignar el valor devuelto en a? declaración a una variable
(ver Ejemplo 4-27)
Example 4-27. asignando a ? resultado condicional a la variable a
<?php
$enough = $fuel <= 1 ? FALSE : TRUE;
?>
Aquí $enough se le asignará el valor VERDADERO solo cuando haya más de un galón
de combustible; de lo contrario, se le asigna el valor FALSE.
Si encuentras el? Si el operador es confuso, puede atenerse a las declaraciones if, pero
debe estar familiarizado con él, porque lo verá en el código de otras personas. Puede ser
difícil de leer, porque a menudo mezcla múltiples ocurrencias de la misma variable. Por
ejemplo, un código como el siguiente es bastante popular:
$saved = $saved >= $new ? $saved : $new;
Si lo desmontas cuidadosamente, puedes descubrir qué hace este código:
$saved = // Set the value of $saved to...
$saved >= $new // Check $saved against $new
? // Yes, comparison is true ...
$saved // ... so assign the current value of
$saved
: // No, comparison is false ...
$new; // ... so assign the value of $new
Es una forma concisa de realizar un seguimiento del mayor valor que ha visto a medida
que avanza un programa. Guarda el valor más grande en $saved y lo compara con $new
cada vez que obtiene un nuevo valor. Programadores familiarizados con el operador ? lo
encuentra más conveniente que si las declaraciones para tales comparaciones cortas.
Cuando no se utiliza para escribir código compacto, se usa generalmente para tomar
alguna decisión en línea, como cuando se prueba si una variable se establece antes de
pasarla a una función.
Looping (Bucle o Ciclo)
Una de las mejores cosas de las computadoras es que pueden repetir el cálculo de tareas
de forma rápida e incansable. A menudo, es posible que desee que un programa repita la
misma secuencia de código una y otra vez hasta que algo suceda, como que un usuario
ingrese un valor o alcance un final natural. Las diversas estructuras de bucle de PHP
proporcionan la forma perfecta de hacerlo.
Para ver cómo funciona esto, eche un vistazo a la Figura 4-4. Es muy similar a la
metáfora de la carretera utilizada para ilustrar las declaraciones, excepto que el desvío
también tiene una sección de bucle que, una vez que un vehículo ha ingresado, puede
salir solo bajo las condiciones correctas del programa.
Figura 4-4. Imaginar un bucle como parte de un diseño de autopista del programa
Bucle Haga Mientras ( o Bucle While o Loop While)
Volteemos el tablero del automóvil digital en el Ejemplo 4-26 en un bucle que
comprueba continuamente el nivel de combustible mientras conduce, utilizando un ciclo
while (Ejemplo 4-28).
Example 4-28. Un Ciclo Haga Mientas o Bucle While
<?php
$fuel = 10;
while ($fuel > 1)
{
// Keep driving ...
echo "There's enough fuel";
}
?>
En realidad, es posible que prefiera mantener encendida una luz verde en lugar de texto
de salida, pero el punto es que cualquier indicación positiva que desee hacer sobre el
nivel de combustible se coloca dentro del ciclo while. Por cierto, si prueba este ejemplo
por su cuenta, tenga en cuenta que seguirá imprimiendo la cadena hasta que haga clic en
el botón Detener de su navegador.
Para otro ejemplo de un ciclo while que muestra la tabla de 12 veces, vea el Ejemplo 4-
29.
Ejemplo 4-29. Un Ciclo Haga Mientras Imprime 12 veces una tabla
<?php
$count = 1;
while ($count <= 12)
El tipo final de instrucción de bucle, el bucle for, también es el más poderoso, ya que
combina las habilidades para configurar variables a medida que ingresa al bucle, prueba
condiciones mientras itera bucles y modifica variables después de cada iteración.
El ejemplo 4-33 muestra cómo se puede escribir el programa de la tabla de multiplicar
con un ciclo for.
Ejemplo 4-33. Salida para la table de tiempos dentro de un bucle for
<?php
for ($count = 1 ; $count <= 12 ; ++$count)
echo "$count times 12 is " . $count * 12 . "<br>";
?>
¿Ve cómo se ha reducido todo el código a una sola declaración que contiene una única
instrucción condicional? Esto es lo que está pasando. Cada instrucción for toma tres
parámetros:
 Una expresión de inicialización
 Una expresión de condición
 Una expresión de modificación

Estos están separados por puntos y comas como este: for (expr1; expr2; expr3). Al
comienzo de la primera iteración del ciclo, se ejecuta la expresión de inicialización. En
el caso del código de tabla de tiempos, $count se inicializa al valor 1. Luego, cada vez
que se pasa el ciclo, se prueba la expresión de condición (en este caso, $count <= 12), y
el ciclo se ingresa solo si la condición es VERDADERA Finalmente, al final de cada
NOTA
Al igual que con las declaraciones if, notará que se requieren llaves para mantener las
instrucciones dentro de las instrucciones while, a menos que haya una sola.
iteración, se ejecuta la expresión de modificación. En el caso del código de tabla de
tiempos, la variable $count se incrementa.
Toda esta estructura elimina cualquier requisito para colocar los controles en un bucle
dentro de su cuerpo, liberándolo solo para las afirmaciones que quiere que realice el
bucle.
Recuerde usar llaves con un bucle for si contendrá más de una instrucción, como en el
Ejemplo 4-34.
Example4-34. El ejemplo 4-33 con ciclo forloop from agregando corchetes
<?php
for ($count = 1 ; $count <= 12 ; ++$count)
{
echo "$count times 12 is " . $count * 12;
echo "<br>";
}
?>
Vamos a comparar cuándo usar los bucles for y while. El bucle for está explícitamente
diseñado alrededor de un único valor que cambia regularmente. Por lo general, tiene un
valor que se incrementa, como cuando se le pasa una lista de opciones de usuario y
desea procesar cada una de las opciones una por una. Pero puedes transformar la
variable como quieras. Una forma más compleja de la instrucción for incluso le permite
realizar múltiples operaciones en cada uno de los tres parámetros:
for ($i = 1, $j = 1 ; $i + $j < 10 ; $i++ , $j++)
{
// ...
}
Eso es complicado y no recomendado para usuarios nuevos. La clave es distinguir las
comas de los puntos y comas. Los tres parámetros deben estar separados por punto y
coma. Dentro de cada parámetro, las declaraciones múltiples se pueden separar por
comas. Por lo tanto, en el ejemplo anterior, el primero y el tercer parámetro contienen
cada uno dos declaraciones:
$i = 1, $j = 1 // Initialize $i and $j
$i + $j < 10 // Terminating condition
$i++ , $j++ // Modify $i and $j at the end of each iteration
Lo principal a tomar de este ejemplo es que debe separar las tres secciones de
parámetros con punto y coma, no con comas (que deben usarse solo para separar
instrucciones dentro de una sección de parámetros).
Entonces, ¿cuándo es más adecuada una declaración while que una declaración for?
Cuando su condición no depende de un cambio simple y regular a una variable. Por
ejemplo, si desea verificar alguna entrada especial o error y finalizar el ciclo cuando
ocurre, use una instrucción while.
Rompiendo un Ciclo
Del mismo modo que vio cómo salir de una declaración switch, también puede salir de
un bucle for usando el mismo comando de salto. Este paso puede ser necesario cuando,
por ejemplo, uno de sus estados de cuenta devuelve un error y el ciclo no puede seguir
ejecutándose de manera segura.
Un caso en el que esto puede ocurrir es cuando la escritura de un archivo devuelve un
error, posiblemente porque el disco está lleno (consulte el Ejemplo 4-35).
Ejemplo 4-35. Escribiendo un archive con un ciclo for y saliendo si ocurre un error de
escritura
<?php
$fp = fopen("text.txt", 'wb');
for ($j = 0 ; $j < 100 ; ++$j)
{
$written = fwrite($fp, "data");
if ($written == FALSE) break;
}
fclose($fp);
?>
Esta es la pieza de código más complicada que has visto hasta ahora, pero estás listo
para ello. Examinaremos los comandos de manejo de archivos en un capítulo posterior,
pero por ahora todo lo que necesita saber es que la primera línea abre el archivo text.txt
para escribir en modo binario, y luego devuelve un puntero al archivo en la variable $
fp, que se usa más tarde para referirse al archivo abierto.
Luego, el ciclo itera 100 veces (de 0 a 99) escribiendo los datos de cadena en el archivo.
Después de cada escritura, a la variable $ written se le asigna un valor mediante la
función fwrite que representa el número de caracteres escritos correctamente. Pero si
hay un error, la función fwrite asigna el valor FALSE.
El comportamiento de fwrite hace que sea fácil para el código verificar la variable $
written para ver si está establecido en FALSE y, si es así, para salir del bucle hacia la
siguiente instrucción que cierra el archivo.
Si buscas mejorar el código, la línea:
if ($written == FALSE) break;
puede ser simplificada usando el operador NOT COMO EN ESTE EJEMPLO
if (!$written) break;
De hecho, el par de instrucciones de bucle interno se puede acortar a la siguiente
instrucción individual:
if (!fwrite($fp, "data")) break;
El comando break es incluso más poderoso de lo que piensas, porque si tienes un código
anidado en más de una capa de la que necesitas salir, puedes seguir el comando break
con un número para indicar de cuántos niveles salir, como en este caso:
break 2;
la Instrucción continue
La instrucción continue es un poco como una declaración de interrupción, excepto que
ordena a PHP detener el procesamiento del bucle actual y pasar directamente a su
siguiente iteración. Entonces, en lugar de salir del ciclo completo, PHP sale solo de la
iteración actual.
Este enfoque puede ser útil en casos en los que sabe que no tiene sentido continuar la
ejecución dentro del ciclo actual y desea guardar los ciclos del procesador o evitar que
ocurra un error moviéndose directamente a la siguiente iteración del ciclo. En el
ejemplo 4-36, se usa una instrucción continue para evitar que se emita un error de
división por cero cuando la variable $j tiene un valor de 0.
Example 4-36. Evitando los errores de división por cero usando continue
<?php
$j = 10;
while ($j > −10)
{
$j--;
if ($j == 0) continue;
echo (10 / $j) . "<br>";
}
?>
Para todos los valores de $j entre 10 y -10, con la excepción de 0, se muestra el
resultado de calcular 10 dividido por $j. Pero para el caso particular de que $j sea 0, se
emite la instrucción continue y la ejecución salta inmediatamente a la siguiente iteración
del ciclo.
Efectos implícito y explícito
PHP es un lenguaje poco tipado que le permite declarar una variable y su tipo
simplemente utilizándola. También convierte automáticamente valores de un tipo a otro
siempre que sea necesario. Esto se llama conversión implícita.
Sin embargo, puede haber ocasiones en que la conversión implícita de PHP no es lo que
desea. En el ejemplo 4-37, tenga en cuenta que las entradas a la división son números
enteros. Por defecto, PHP convierte la salida a punto flotante para que pueda dar el
valor más preciso: 4.66 recurrente.
Example 4-37. Esta Expresion retorna un numero de punto flotante
<?php
$a = 56;
$b = 12;
$c = $a / $b;
echo $c;
?>
Pero, ¿y si hubiéramos querido que $c fuera un número entero? Hay varias maneras en
que podemos lograr esto, una de las cuales es forzar el resultado de $a / $b para
convertirlo en un valor entero usando el tipo entero de conversión (int), como este:
$c = (int) ($a / $b);
Esto se llama lanzamiento explícito. Tenga en cuenta que para garantizar que el valor de
toda la expresión se convierte en un entero, colocamos la expresión entre paréntesis. De
lo contrario, solo la variable $a se habría convertido en un entero, un ejercicio sin
sentido, ya que la división por $b todavía habría devuelto un número de coma flotante.
Table 4-6. PHP’s cast types
Cast type Description
(int) (integer)
Convierte a entero eliminando la parte decimales
(bool) (boolean)
Convierte a un Boolean.
(float) (double) (real)
Convierte a un numero de punto flotante
(string)
Convierte a caracteres
(array)
Convierte en un array
(object)
Convierte en un objeto.
PHP Enlaces Dinamicos
Debido a que PHP es un lenguaje de programación, y el resultado puede ser
completamente diferente para cada usuario, es posible que un sitio web completo se
ejecute desde una sola página web de PHP. Cada vez que el usuario hace clic en algo,
los detalles pueden enviarse a la misma página web, que decide qué hacer a
continuación de acuerdo con las diversas cookies y / u otros detalles de la sesión que
pueda haber almacenado.
NOTA
Puede convertir explícitamente a los tipos que se muestran en la Tabla 4-6, pero
generalmente puede evitar tener que usar un molde llamando a una de las funciones
incorporadas de PHP. Por ejemplo, para obtener un valor entero, puede usar la función
intval. Al igual que con algunas otras secciones de este libro, esta está principalmente aquí
para ayudarlo a comprender el código de terceros que puede encontrar.
Aunque es posible construir un sitio web completo de esta manera, no es recomendable,
ya que su código fuente crecerá, crecerá y comenzará a ser difícil de manejar, ya que
tiene que tener en cuenta todas las acciones posibles que un usuario podría tomar.
En cambio, es mucho más sensato dividir el desarrollo de su sitio web en diferentes
partes. Por ejemplo, un proceso distinto es registrarse en un sitio web, junto con todas
las comprobaciones que esto implica para validar una dirección de correo electrónico,
determinar si ya se tomó un nombre de usuario, y así sucesivamente.
Un segundo módulo podría ser uno para iniciar sesión en los usuarios antes de
entregarlos a la parte principal de su sitio web. Entonces, es posible que tenga un
módulo de mensajería con la posibilidad de que los usuarios dejen comentarios, un
módulo que contenga enlaces e información útil, otro que permita la carga de imágenes,
y más.
Siempre que haya creado una forma de rastrear a su usuario a través de su sitio web
mediante cookies o variables de sesión (que veremos más de cerca en capítulos
posteriores), puede dividir su sitio web en secciones sensibles de código PHP. , cada
uno autónomo, y por lo tanto, disfrute de un futuro mucho más fácil desarrollando cada
nueva característica y manteniendo las antiguas.
Enlaces Dinamicos en Acción
Una de las aplicaciones más populares impulsadas por PHP en la Web hoy en día es la
plataforma de blogs WordPress (vea la Figura 4-5). Como blogger o lector de blogs,
puede que no te des cuenta, pero a cada sección principal se le ha asignado su propio
archivo PHP principal, y se han colocado una gran cantidad de funciones genéricas
compartidas en archivos separados que están incluidos en las páginas principales de
PHP. según sea necesario.
Toda la plataforma se mantiene junto con el seguimiento de la sesión detrás de escena,
por lo que apenas sabe cuándo está pasando de una subsección a otra. Por lo tanto,
como desarrollador web, si desea ajustar WordPress, es fácil encontrar el archivo
particular que necesita, modificarlo y probarlo y depurarlo sin tener que lidiar con partes
no conectadas del programa.
La próxima vez que use WordPress, observe la barra de direcciones de su navegador,
especialmente si está administrando un blog, y notará algunos de los diferentes archivos
PHP que utiliza.
Figura 4-5. La plataforma de blogs de WordPress está escrita en PHP
Este capítulo ha cubierto bastante terreno, y ahora usted debería ser capaz de armar sus propios
pequeños programas de PHP. Pero antes de hacerlo, y antes de continuar con el siguiente
capítulo sobre funciones y objetos, es posible que desee probar su nuevo conocimiento en las
siguientes preguntas.
Preguntas
1. ¿Qué valores subyacentes reales están representados por VERDADERO y
FALSO?
2. ¿Cuáles son las dos formas más simples de expresiones?
3. ¿Cuál es la diferencia entre operadores unarios, binarios y ternarios?
4. ¿Cuál es la mejor manera de forzar la precedencia de su propio operador?
5. ¿Qué se entiende por asociatividad del operador?
6. ¿Cuándo usarías el operador === (identidad)?
7. Nombra los tres tipos de declaraciones condicionales.
8. ¿Qué comando puede usar para omitir la iteración actual de un bucle y pasar al
siguiente?
9. ¿Por qué un bucle for es más poderoso que un bucle while?
10. ¿Cómo las instrucciones if y while interpretan expresiones condicionales de
diferentes tipos de datos?
Vea el Capítulo 4 Respuestas en el Apéndice A para las respuestas a estas preguntas.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (11)

Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Manual php
Manual phpManual php
Manual php
 
Manual De Php
Manual De PhpManual De Php
Manual De Php
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5
 
Manual+php+básico
Manual+php+básicoManual+php+básico
Manual+php+básico
 
Funciones en php
Funciones en phpFunciones en php
Funciones en php
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Mini manual php
Mini manual phpMini manual php
Mini manual php
 
Programación en c primer programa en c
Programación en c primer programa en cProgramación en c primer programa en c
Programación en c primer programa en c
 
Manual basico de PHP
Manual basico de PHPManual basico de PHP
Manual basico de PHP
 

Similar a Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y control de flujo en php

Similar a Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y control de flujo en php (20)

Mini manual php
Mini manual phpMini manual php
Mini manual php
 
Php informacion
Php informacion Php informacion
Php informacion
 
Manual de php basico
Manual de php basicoManual de php basico
Manual de php basico
 
Manuan de php y MySql-1.pdf
Manuan de php y MySql-1.pdfManuan de php y MySql-1.pdf
Manuan de php y MySql-1.pdf
 
Ensayo php
Ensayo phpEnsayo php
Ensayo php
 
Tema7 php
Tema7 phpTema7 php
Tema7 php
 
Operadores Matemáticos
Operadores MatemáticosOperadores Matemáticos
Operadores Matemáticos
 
Operadores Importancia
Operadores ImportanciaOperadores Importancia
Operadores Importancia
 
Operadores Importancia
Operadores ImportanciaOperadores Importancia
Operadores Importancia
 
PHP mode on
PHP mode onPHP mode on
PHP mode on
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeInt
 
Php
PhpPhp
Php
 
84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De Formularios84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De Formularios
 
Php basico
Php basicoPhp basico
Php basico
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Fundamentos De Algoritmia
Fundamentos De AlgoritmiaFundamentos De Algoritmia
Fundamentos De Algoritmia
 
Elementos del Hardware y Software
Elementos del Hardware y SoftwareElementos del Hardware y Software
Elementos del Hardware y Software
 
Expresiones regulares edward
Expresiones regulares edwardExpresiones regulares edward
Expresiones regulares edward
 
Introduccion c
Introduccion cIntroduccion c
Introduccion c
 
DESARROLLO-CON-PHP-pptx.pptx
DESARROLLO-CON-PHP-pptx.pptxDESARROLLO-CON-PHP-pptx.pptx
DESARROLLO-CON-PHP-pptx.pptx
 

Último

Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 

Último (8)

Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 

Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y control de flujo en php

  • 1. Capítulo 3. Expresiones y Control de Flujo en PHP El capítulo anterior introdujo varios temas de paso que este capítulo cubre más completamente, como hacer elecciones (ramificación) y crear expresiones complejas. En el capítulo anterior, quería centrarme en la sintaxis y las operaciones más básicas de PHP, pero no pude evitar tocar temas más avanzados. Ahora puedo completar los antecedentes que necesita para usar estas potentes funciones de PHP correctamente. En este capítulo, obtendrá una base sólida sobre cómo funciona la programación PHP en la práctica y sobre cómo controlar el flujo del programa. Expresiones Comencemos con la parte más fundamental de cualquier lenguaje de programación: las expresiones. Una expresión es una combinación de valores, variables, operadores y funciones que da como resultado un valor. Es familiar para cualquiera que haya tomado álgebra de escuela secundaria: y = 3(abs(2x) + 4) Que en PHP seria: $y = 3 * (abs(2 * $x) + 4); El valor devuelto (y, o $y en este caso) puede ser un número, una cadena o un valor booleano (llamado así por George Boole, un matemático y filósofo inglés del siglo XIX). Por ahora, debes estar familiarizado con los dos primeros tipos de valores, pero explicaré el tercero. TRUE o FALSE (Verdadero o Falso) Un valor booleano básico puede ser VERDADERO o FALSO. Por ejemplo, la expresión "20> 9" (20 es mayor que 9) es VERDADERO, y la expresión "5 == 6" (5 es igual a 6) es FALSA. (Puede combinar operaciones booleanas usando operadores como AND, OR y XOR, que se tratan más adelante en este capítulo). El ejemplo 4-1 muestra algunas expresiones simples: las dos que acabo de mencionar, más un par más. Para cada línea, imprime una letra entre a y d, seguida de dos puntos y el resultado de las expresiones. La etiqueta <br> está allí para crear un salto de línea y así separar la salida en cuatro líneas en HTML. NOTA Tenga en cuenta que estoy usando letras mayúsculas para los nombres VERDADERO y FALSO. Esto se debe a que son constantes predefinidas en PHP. También puede usar las versiones en minúsculas, si lo prefiere, ya que también están predefinidas. De hecho, las versiones en minúsculas son más estables, porque PHP no te permite redefinirlas; las mayúsculas pueden redefinirse, algo que debe tener en cuenta si importa código de terceros.
  • 2. Ejemplo 4-1.Cuatro Expresiones Booleanas simple <?php echo "a: [" . (20 > 9) . "]<br>"; echo "b: [" . (5 == 6) . "]<br>"; echo "c: [" . (1 == 0) . "]<br>"; echo "d: [" . (1 == 1) . "]<br>"; ?> La salida de este codigo seria: a: [1] b: [] c: [] d: [1] Observe que ambas expresiones a: y d: evalúan a TRUE, que tiene un valor de 1. Pero b: y c :, que evalúan a FALSE, no muestran ningún valor, porque en PHP la constante FALSE se define como NULL, o nada. Para verificar esto usted mismo, puede ingresar el código en el Ejemplo 4-2. Ejemplo 4-2. Valores de Salida de TRUE y FALSE <?php // test2.php echo "a: [" . TRUE . "]<br>"; echo "b: [" . FALSE . "]<br>"; ?> La salida seria: a: [1] b: [] Por cierto, en algunos lenguajes FALSE se puede definir como 0 o incluso -1, por lo que vale la pena verificar su definición en cada lenguaje. Literales y variables La forma más simple de una expresión es un literal, que simplemente significa algo que se evalúa a sí mismo, como el número 73 o la cadena "Hola". Una expresión también podría ser simplemente una variable, que evalúa el valor que se le ha asignado. Ambos son tipos de expresiones, porque devuelven un valor. NOTA Ahora que estamos completamente en la era de HTML5, y XHTML ya no está planeado para sustituir HTML, no es necesario utilizar la forma <br/> de cierre automático de la etiqueta <br> ni ningún elemento vacío (unos sin etiquetas de cierre), porque / es ahora opcional. Por lo tanto, he elegido usar el estilo más simple en este libro. Si alguna vez creó etiquetas HTML no válidas de cierre automático (como <div />), no funcionarán en HTML5 porque se ignorará / y deberá reemplazarlas, por ejemplo, con <div>. .. </ div>. Sin embargo, aún debe usar la forma <br/> de la sintaxis HTML al usar XHTML.
  • 3. El ejemplo 4-3 muestra tres literales y dos variables, todos los cuales devuelven valores, aunque de diferentes tipos. Ejemplo 4-3. Literales y variables <?php $myname = "Brian"; $myage = 37; echo "a: " . 73 . "<br>"; // Numeric literal echo "b: " . "Hello" . "<br>"; // String literal echo "c: " . FALSE . "<br>"; // Constant literal echo "d: " . $myname . "<br>"; // String variable echo "e: " . $myage . "<br>"; // Numeric variable ?> Y, como era de esperar, verá un valor de retorno de todos estos, con la excepción de c :, que se evalúa como FALSE, y no devuelve nada en la siguiente salida a: 73 b: Hello c: d: Brian e: 37 Junto con los operadores, es posible crear expresiones más complejas que evalúen resultados útiles. Cuando combina construcciones de asignación o flujo de control con expresiones, el resultado es una declaración. El ejemplo 4-4 muestra uno de cada uno. El primero asigna el resultado de la expresión 366 - $day_number a la variable $days_to_new_year, y el segundo genera un mensaje amistoso solo si la expresión $days_to_new_year <30 se evalúa como TRUE. Ejemplo 4-4.Una Expresion y una Declaraciòn <?php $days_to_new_year = 366 - $day_number; // Expression if ($days_to_new_year < 30) { echo "Not long now till new year"; // Statement } ?> Operadores PHP ofrece una gran cantidad de poderosos operadores que van desde la aritmética, la cadena y los operadores lógicos hasta la asignación, comparación y más (consulte la Tabla 4-1).
  • 4. Table 4-1. PHP operator types Operador Descripcion Ejemplo Arithmetic Matematica Basica $a + $b Array Arreglo Union(Array unión) $a + $b Assignment Asignacion de Valores $a = $b + 23 Bitwise Manipular bits dentro de Bytes 12 ^ 9 Comparison Comparar dos valores $a < $b Execution Ejecuta el contenido de los ticks de espalda `ls -al` Increment/decrement Añadir o sustraer $a++ Logical Booleano $a and $b String Concatenacion $a . $b Cada operador toma un número diferente de operandos:  Operadores unarios, como incrementos ($ a ++) o negación (- $ a), que toman un solo operando.  Operadores binarios, que representan la mayor parte de los operadores PHP, incluida la suma, la resta, la multiplicación y la división.  Un operador ternario, que toma la forma? x: y. Es una declaración sucinta, de línea única if que elige entre dos expresiones, dependiendo del resultado de una tercera. Precedencia de Operadores Si todos los operadores tuvieran la misma precedencia, se procesarían en el orden en que se encuentran. De hecho, muchos operadores tienen la misma precedencia, así que echemos un vistazo a algunos Ejemplo 4-5. Ejemplo 4-5. Tres expresionesequivalres 1 + 2 + 3 − 4 + 5 2 − 4 + 5 + 3 + 1 5 + 2 − 4 + 1 + 3 Aquí verá que, aunque se han movido los números (y sus operadores anteriores), el resultado de cada expresión es el valor 7, porque los operadores más y menos tienen la misma precedencia. Podemos intentar lo mismo con la multiplicación y la división (ver Ejemplo 4-6). Ejemplo 4-6. Tres expresiones que son tambien equivalentes 1 * 2 * 3 / 4 * 5 2 / 4 * 5 * 3 * 1 5 * 2 / 4 * 1 * 3
  • 5. Aquí el valor resultante es siempre 7.5. Pero las cosas cambian cuando mezclamos operadores con diferentes precedencias en una expresión, como en el Ejemplo 4-7. Ejemplo 4-7. Tres expresiones usando operadores de precedencia mezclados 1 + 2 * 3 − 4 * 5 2 − 4 * 5 * 3 + 1 5 + 2 − 4 + 1 * 3 Si no hubiera precedencia de operador, estas tres expresiones evaluarían a 25, -29 y 12, respectivamente. Pero debido a que la multiplicación y la división tienen prioridad sobre la suma y la resta, hay paréntesis implícitos alrededor de estas partes de las expresiones, que se verían como el Ejemplo 4-8 si fueran visibles. Ejemplo 4-8. Tres expresiones monstrando parenthesis implicados 1 + (2 * 3) − (4 * 5) 2 − (4 * 5 * 3) + 1 5 + 2 − 4 + (1 * 3) Claramente, PHP debe evaluar las subexpresiones entre paréntesis primero para derivar las expresiones semi-completadas en el Ejemplo 4-9. Ejemplo 4-9. Después de evaluar las subexpresiones entre paréntesis 1 + (6) − (20) 2 − (60) + 1 5 + 2 − 4 + (3) Los resultados finales de estas expresiones son -13, -57 y 6, respectivamente (bastante diferentes de los resultados de 25, -29 y 12 que hubiéramos visto si no hubiera habido precedencia del operador). Por supuesto, puede anular la precedencia predeterminada del operador insertando sus propios paréntesis y forzando los resultados originales que hubiésemos visto si no hubiera habido precedencia del operador (vea el Ejemplo 4-10). Ejemplo 4-10. Forzando evaluacion de izquierda-derecha ((1 + 2) * 3 − 4) * 5 (2 − 4) * 5 * 3 + 1 (5 + 2 − 4 + 1) * 3 Con los paréntesis insertados correctamente, ahora vemos los valores 25, -29 y 12, respectivamente. La Tabla 4-2 enumera los operadores de PHP en orden de precedencia de mayor a menor.
  • 6. Table 4-2. la precedencia de los operadores de PHP (alto y bajo) Operator(s) Type () Parentheses ++ −− Increment/decrement ! Logical * / % Arithmetic + − . Arithmetic and string << >> Bitwise < <= > >= <> Comparison == != === !== Comparison & Bitwise (and references) ^ Bitwise | Bitwise && Logical || Logical ? : Ternary = += −= *= /= .= %= &= != ^= <<= >>= Assignment and Logical xor Logical or Logical Asociatividad Hemos estado buscando expresiones de procesamiento de izquierda a derecha, excepto donde la precedencia del operador está en efecto. Pero algunos operadores requieren un procesamiento de derecha a izquierda, y esta dirección de procesamiento se denomina asociatividad del operador. Para algunos operadores no hay asociatividad. La asociatividad se vuelve importante en los casos en los que no se fuerza explícitamente la precedencia, por lo que debe conocer las acciones predeterminadas de los operadores, como se detalla en la Tabla 4-3, que enumera los operadores y su asociatividad.
  • 7. Table 4-3. Operator de Asociatividad Operator Description Associativity CLONE NEW Create a new object None < <= >= == != === !== <> Comparison None ! Logical NOT Right ~ Bitwise NOT Right ++ −− Increment and decrement Right (int) Cast to an integer Right (double) (float) (real) Cast to a floating-point number Right (string) Cast to a string Right (array) Cast to an array Right (object) Cast to an object Right @ Inhibit error reporting Right = += −= *= /= Assignment Right .= %= &= |= ^= <<= >>= Assignment Right + Addition and unary plus Left − Subtraction and negation Left * Multiplication Left / Division Left % Modulus Left . String concatenation Left << >> & ^ | Bitwise Left ?: Ternary Left || && and or xor Logical Left , Separator Left Por ejemplo, echemos un vistazo al operador de asignación en el Ejemplo 4-11, donde tres variables están todas configuradas con el valor 0.
  • 8. Ejemplo 4-11. Una declaración de multiple asignación <?php $level = $score = $time = 0; ?> Operadores Relacionales Los operadores relacionales prueban dos operandos y devuelven un resultado booleano de VERDADERO o FALSO. Hay tres tipos de operadores relacionales: igualdad, comparación y lógica. Igualdad Como ya nos hemos encontrado varias veces en este capítulo, el operador de igualdad es == (dos signos iguales). Es importante no confundirlo con el operador de asignación = (signo igual). En el ejemplo 4-12, la primera instrucción asigna un valor y la segunda prueba la igualdad. Ejemplo 4-12.Asigna un valor y prueba la iguialda <?php $month = "March"; if ($month == "March") echo "It's springtime"; ?> Como puede ver, al devolver VERDADERO o FALSO, el operador de igualdad le permite probar condiciones usando, por ejemplo, una declaración if. Pero esa no es toda la historia, porque PHP es un lenguaje poco tipado. Si los dos operandos de una expresión de igualdad son de tipos diferentes, PHP los convertirá a cualquier tipo que tenga más sentido para él. Por ejemplo, cualquier cadena compuesta por números se convertirá en números siempre que se compare con un número. En el ejemplo 4-13, $a y $b son dos cadenas diferentes, por lo que no esperamos que ninguna de las instrucciones if genere un resultado. Example 4-13. The equality and identity operators <?php $a = "1000"; $b = "+1000"; if ($a == $b) echo "1"; if ($a === $b) echo "2"; ?> NOTA Como principiante de PHP, debe evitar los peligros potenciales de la asociatividad del operador anidando siempre sus subexpresiones entre paréntesis para forzar el orden de la evaluación. Esto también ayudará a otros programadores que puedan tener que mantener su código para comprender lo que está sucediendo.
  • 9. Sin embargo, si ejecuta el ejemplo, verá que genera el número 1, lo que significa que la primera sentencia if se evalúa como VERDADERO. Esto se debe a que ambas cadenas se convirtieron primero en números, y 1000 es el mismo valor numérico que +1000. Por el contrario, la segunda instrucción if usa el operador de identidad, tres signos iguales en una fila, lo que impide que PHP convierta tipos automáticamente. $ a y $ b, por lo tanto, se comparan como cadenas y ahora se encuentran diferentes, por lo que no se genera nada. Al igual que con forzar la precedencia del operador, siempre que tenga alguna duda sobre cómo PHP convertirá los tipos de operandos, puede usar el operador de identidad para desactivar este comportamiento. De la misma manera que puede usar el operador de igualdad para probar si los operandos son iguales, puede probar que no son iguales usando! =, El operador de desigualdad. Eche un vistazo al Ejemplo 4-14, que es una reescritura del Ejemplo 4-13 en el cual los operadores de igualdad e identidad han sido reemplazados por sus inversas. Ejemplo 4-14. La desigualdad y operadores no identicos <?php $a = "1000"; $b = "+1000"; if ($a != $b) echo "1"; if ($a !== $b) echo "2"; ?> Y, como era de esperar, la primera instrucción if no genera el número 1, porque el código pregunta si $a y $b no son iguales entre sí numéricamente. En su lugar, emite el número 2, porque la segunda instrucción if pregunta si $a y $b no son idénticos entre sí en sus tipos de operandos actuales, y la respuesta es VERDADERO; Ellos no son los mismos. Operadores de Comparación Al usar operadores de comparación, puede probar algo más que igualdad y desigualdad. PHP también le proporciona> (es mayor que), <(es menor que),> = (es mayor o igual que), y <= (es menor o igual que) para jugar. El ejemplo 4-15 muestra estos operadores en uso. Ejemplo 4-15. Los 4 operadores de comparación <?php $a = 2; $b = 3; if ($a > $b) echo "$a is greater than $b<br>"; if ($a < $b) echo "$a is less than $b<br>"; if ($a >= $b) echo "$a is greater than or equal to $b<br>"; if ($a <= $b) echo "$a is less than or equal to $b<br>"; ?> En este Ejemplo, donde $a is 2 and $b is 3, la salida es la siguiente:
  • 10. 2 is less than 3 2 is less than or equal to 3 Pruebe este ejemplo usted mismo, alterando los valores de $ a y $ b, para ver los resultados. Intente configurarlos con el mismo valor y vea qué sucede. Operadores Logicos Los operadores lógicos producen resultados verdaderos o falsos, y por lo tanto también se conocen como operadores booleanos. Hay cuatro de ellos (ver Tabla 4-4). Tabla 4-4. Los operadores Logicos Logical operator Description AND TRUE si ambos operadors son TRUE OR TRUE si alguno de los operado es TRUE XOR TRUE si uno de los los dos operadores es TRUE NOT TRUE si el operandos is FALSE, o FALSE alguno de los operadores es TRUE Puede ver estos operadores utilizados en el Ejemplo 4-16. Tenga en cuenta que el símbolo ! es requerido por PHP en lugar de la palabra NOT. Además, los operadores pueden ser mayúsculas o minúsculas. Ejemplo 4-16. Los operadores lógicos en uso <?php $a = 1; $b = 0; echo ($a AND $b) . "<br>"; echo ($a or $b) . "<br>"; echo ($a XOR $b) . "<br>"; echo !$a . "<br>"; ?> Este ejemplo genera NULL, 1, 1, NULL, lo que significa que solo la segunda y tercera declaraciones de eco se evalúan como TRUE. (Recuerde que NULL -o nada- representa un valor de FALSE). Esto se debe a que la instrucción AND requiere que ambos operandos sean TRUE si va a devolver un valor de TRUE, mientras que la cuarta instrucción realiza un NOT sobre el valor de $ a, convirtiéndolo de VERDADERO (un valor de 1) en FALSO. Si desea experimentar con esto, pruebe el código, dando $ a y $ b variando los valores de 1 y 0. NOTA Al codificar, recuerde tener en cuenta que AND y OR tienen una prioridad menor que las otras versiones de los operadores, && y ||. En expresiones complejas, puede ser más seguro usar && y || por esta razón.
  • 11. El operador OR puede causar problemas involuntarios en las sentencias if, porque el segundo operando no se evaluará si el primero se evalúa como VERDADERO. En el ejemplo 4-17, nunca se llamará a la función getnext si $ finished tiene un valor de 1. Example 4-17. Una declaracion usando el operador OR <?php if ($finished == 1 OR getnext() == 1) exit; ?> Si necesita invocar getnext para cada enunciado if, puede volver a escribir el código como se ha hecho en el Ejemplo 4-18. Ejemplo 4-18. La declaración “if ... OR” ha sido modificada para asegurarse la llamada getnext <?php $gn = getnext(); if ($finished == 1 OR $gn == 1) exit; ?> En este caso, el código en la función getnext se ejecutará y el valor devuelto se almacenará en $ gn antes de la instrucción if. La Tabla 4-5 muestra todas las posibles variaciones del uso de los operadores lógicos. También debe tener en cuenta que! TRUE equivale a FALSE y! FALSE equivale a TRUE. Table 4-5. All possible PHP logical expressions Operators and results a b AND OR XOR TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE Condicionales Los condicionales alteran el flujo del programa. Le permiten hacer preguntas sobre ciertas cosas y responder a las respuestas que recibe de diferentes maneras. Los condicionales son fundamentales para las páginas web dinámicas, el objetivo de usar PHP en primer lugar, porque facilitan la creación de resultados diferentes cada vez que se visita una página. NOTA Otra solución es simplemente cambiar las dos cláusulas para asegurarse de que se ejecuta getnext, ya que aparecerá primero en la expresión.
  • 12. Hay tres tipos de condicionales sin bucle: la instrucción if, la instrucción switch y el operador ?. Al no hacer bucles, me refiero a que las acciones iniciadas por la declaración tienen lugar y el flujo del programa se mueve, mientras que los condicionales de bucle (que veremos en breve) ejecutan código una y otra vez hasta que se cumple una condición. La Declaración IF Una forma de pensar sobre el flujo de programas es imaginarlo como una carretera de un solo carril con la que conduzca. Es casi una línea recta, pero de vez en cuando te encuentras con varias señales que te dicen a dónde ir. En el caso de un enunciado if, podría imaginar una señal de desvío que debe seguir si cierta condición es VERDADERA. Si es así, conduzca y siga el desvío hasta que regrese a donde comenzó y luego continúe su camino en su dirección original. O, si la condición no es VERDADERO, ignora el desvío y continúa conduciendo (consulte la Figura 4-1). El contenido de la condición if puede ser cualquier expresión válida de PHP, incluida la igualdad, la comparación, las pruebas de 0 y NULL, e incluso los valores devueltos por las funciones (ya sean funciones incorporadas o las que usted escribe). Las acciones a tomar cuando una condición if es VERDADERO generalmente se colocan dentro de las llaves, {}. Sin embargo, puede ignorar las llaves si solo tiene una declaración para ejecutar. Pero si siempre usa llaves, evitará tener que buscar errores difíciles de rastrear, como cuando agrega una línea adicional a una condición y no se evalúa debido a la falta de llaves. (Tenga en cuenta que, por razones de espacio y claridad, muchos de los ejemplos de este libro ignoran esta sugerencia y omiten las llaves de declaraciones simples). En el ejemplo 4-19, imagina que es el final del mes y todas tus facturas han sido pagadas, por lo que estás realizando un mantenimiento de la cuenta bancaria.
  • 13. Ejemplo 4-19. Una Declaraciòn IF con llaves <?php if ($bank_balance < 100) { $money = 1000; $bank_balance += $money; } ?> En este ejemplo, está verificando su saldo para ver si es menos de $ 100 (o lo que sea que sea su moneda). Si es así, te pagas $ 1,000 y luego lo agregas al saldo. (¡Si solo ganar dinero fuera así de simple!) Si el saldo bancario es de $ 100 o más, las declaraciones condicionales se ignoran y el flujo del programa salta a la siguiente línea (no se muestra). En este libro, la apertura de llaves generalmente comienza en una nueva línea. A algunas personas les gusta colocar la primera llave a la derecha de la expresión condicional; otros comienzan una nueva línea con eso. Cualquiera de estos está bien, porque PHP le permite establecer sus caracteres en espacios en blanco (espacios, nuevas líneas y pestañas) de la forma que elija. Sin embargo, encontrará que su código es más fácil de leer y depurar si aplica sangría a cada nivel de condicionales con una pestaña. La Declaraciòn Else A veces, cuando un condicional no es VERDADERO, es posible que no desee continuar con el código del programa principal de inmediato, sino que quizás desee hacer otra cosa. Aquí es donde entra la declaración else. Con ella, puede establecer un segundo desvío en su carretera, como se muestra en la Figura 4-2.
  • 14. Con una instrucción if ... else, la primera instrucción condicional se ejecuta si la condición es TRUE. Pero si es FALSO, el segundo se ejecuta. Una de las dos opciones debe ser ejecutada. Bajo ninguna circunstancia se pueden ejecutar ambos (o ninguno). El ejemplo 4-20 muestra el uso de la estructura if ... else. Ejemplo 4-20. Un Declaraciòn if … else entre corchetes <?php if ($bank_balance < 100) { $money = 1000; $bank_balance += $money; } else { $savings += 50; $bank_balance −= 50; } ?> En este ejemplo, ahora que se ha cerciorado de que tiene $ 100 o más en el banco, se ejecuta la declaración else, mediante la cual coloca parte de este dinero en su cuenta de ahorros. Al igual que con las declaraciones if, si su else tiene solo una declaración condicional, puede optar por omitir las llaves. (Sin embargo, las llaves se recomiendan siempre. Primero, hacen que el código sea más fácil de entender. En segundo lugar, le permiten agregar más declaraciones fácilmente a la sucursal más adelante). La Declaraciòn Elseif También hay momentos en los que desea que ocurran varias posibilidades diferentes, según una secuencia de condiciones. Puede lograr esto usando la instrucción elseif. Como se puede imaginar, es como una declaración else, excepto que coloca una expresión condicional adicional antes del código condicional. En el ejemplo 4-21, puede ver un constructo if ... elseif ... else completo. Example 4-21. An if ... elseif ... else statement with curly braces <?php if ($bank_balance < 100) { $money = 1000; $bank_balance += $money; } elseif ($bank_balance > 200) { $savings += 100; $bank_balance −= 100; } else { $savings += 50; $bank_balance −= 50; } ?>
  • 15. En el ejemplo, se ha insertado una instrucción elseif entre las sentencias if y else. Comprueba si su saldo bancario supera los $ 200 y, de ser así, decide que puede permitirse ahorrar $ 100 de este mes. Aunque estoy empezando a estirar la metáfora un poco demasiado lejos, puede imaginarse esto como un conjunto de desvíos múltiples (vea la Figura 4-3). Puede tener tantas declaraciones elseif como desee. Pero a medida que aumenta el número de declaraciones elseif, probablemente sería mejor que considere una declaración de cambio si se ajusta a sus necesidades. Veremos eso a continuación. La Declaración SWITCH La instrucción switch es útil en casos en los que una variable o el resultado de una expresión puede tener múltiples valores, que cada uno debe activar una función diferente. Por ejemplo, considere un sistema de menú basado en PHP que pasa una sola cadena al código del menú principal de acuerdo con lo que el usuario solicite. Digamos que las opciones son Inicio, Acerca de, Noticias, Inicio de sesión y Enlaces, y establecemos la variable $ page en una de ellas, de acuerdo con la entrada del usuario. NOTA una instrucción else cierra una instrucción if ... else o if ... elseif ... else. Puede omitir un último elemento si no es necesario, pero no puede tener uno antes de else else; tampoco puedes tener un elseif antes de una declaración if.
  • 16. Si escribimos el código para esto usando if ... elseif ... else, podría parecerse al Ejemplo 4-22. Ejemplo 4-22. Declaración multiple lineas if ...elseif ... <?php if ($page == "Home") echo "You selected Home"; elseif ($page == "About") echo "You selected About"; elseif ($page == "News") echo "You selected News"; elseif ($page == "Login") echo "You selected Login"; elseif ($page == "Links") echo "You selected Links"; ?> Si usamos la declaracion switch elcodigo quedaria de esta manera como el Ejemplo 4-23. Ejemplo 4-23. Una Declaracion switch <?php switch ($page) { case "Home": echo "You selected Home"; break; case "About": echo "You selected About"; break; case "News": echo "You selected News"; break; case "Login": echo "You selected Login"; break; case "Links": echo "You selected Links"; break; } ?> Como puede ver, $page se menciona solo una vez al comienzo de la instrucción switch. A partir de entonces, el comando de caso busca coincidencias. Cuando ocurre uno, se ejecuta la declaración condicional coincidente. Por supuesto, en un programa real tendría aquí el código para mostrar o saltar a una página, en lugar de simplemente decirle al usuario lo que se seleccionó. Con la instruccion switch, no usa llaves dentro de los comandos de caso. En cambio, comienzan con dos puntos y terminan con la declaración de interrupción. Sin embargo, la lista completa de casos en la declaración switch está encerrada en un conjunto de llaves. Breaking out (Rompiendo) Si desea salir de la instrucción switch porque se ha cumplido una condición, use el comando break. Este comando le dice a PHP que salga del ciclo switch y salte a la siguiente declaración.
  • 17. Si deja fuera los comandos de pausa en el Ejemplo 4-23 y el caso de Inicio evaluado como VERDADERO, entonces se ejecutarán los cinco casos. O si $page tenía el valor News, todos los comandos de casos a partir de ese momento se ejecutarían. Esto es deliberado y permite cierta programación avanzada, pero en general siempre debe recordar emitir un comando de interrupción cada vez que un conjunto de condicionales de la caja ha terminado de ejecutarse. De hecho, omitir la declaración de interrupción es un error común Default Action (Acción por defecto) Un requisito típico en las sentencias switch es recurrir a una acción predeterminada si no se cumple ninguna de las condiciones del caso. Por ejemplo, en el caso del código de menú en el Ejemplo 4-23, puede agregar que se cumplen las condiciones. Por ejemplo, en el caso del código de menú en el Ejemplo 4-23, puede agregar el código en el Ejemplo 4-24 inmediatamente antes del corchete final. Ejemplo 4-24. Una unstruccion pordefecto para agregaral ejemplo 4-23 default: echo "Unrecognized selection"; break; Aunque aquí no se requiere un comando break porque el valor predeterminado es la subdeclaración final, y el flujo del programa continuará automáticamente hasta la llave de cierre, si decide colocar la instrucción predeterminada más arriba, definitivamente necesitaría un comando break para evitar el programa fluye de caer en las siguientes afirmaciones. Generalmente, la práctica más segura es incluir siempre el comando break. Sintaxis Alternativa Si lo prefiere, puede reemplazar la primera llave con un solo punto y la llave con un comando de interrupciónl, como en el Ejemplo 4-25. Sin embargo, este enfoque no se usa comúnmente y se menciona aquí solo en caso de que lo encuentre en un código de terceros. Ejemplo 4-25. Syntaxis alterna del commando <?php switch ($page): case "Home": echo "You selected Home"; break; // etc... case "Links": echo "You selected Links"; break; endswitch; ?>
  • 18. El Operador ? Una forma de evitar la verbosidad de las declaraciones if y else es usar el operador ternario más compacto,?, Lo cual es inusual ya que requiere tres operandos en lugar de los dos típicos. Brevemente nos encontramos con esto en el Capítulo 3 en la discusión sobre la diferencia entre las instrucciones de impresión y echo como un ejemplo de un tipo de operador que funciona bien con impresión pero no con echo. Los ? al operador se le pasa una expresión que debe evaluar, junto con dos instrucciones para ejecutar: una para cuando la expresión se evalúa como VERDADERO, la otra para cuando es FALSA. El ejemplo 4-26 muestra un código que podríamos usar para escribir una advertencia sobre el nivel de combustible de un automóvil en su tablero digital. Ejemplo 4-26. Usando el operador ? <?php echo $fuel <= 1 ? "Fill tank now" : "There's enough fuel"; ?> En esta declaración, si hay un galón o menos de combustible (es decir, si $fuel está configurado a 1 o menos), el tanque de relleno de cuerda ahora se devuelve a la declaración de echo precedente. De lo contrario, la cadena Se devuelve suficiente combustible. También puede asignar el valor devuelto en a? declaración a una variable (ver Ejemplo 4-27) Example 4-27. asignando a ? resultado condicional a la variable a <?php $enough = $fuel <= 1 ? FALSE : TRUE; ?> Aquí $enough se le asignará el valor VERDADERO solo cuando haya más de un galón de combustible; de lo contrario, se le asigna el valor FALSE. Si encuentras el? Si el operador es confuso, puede atenerse a las declaraciones if, pero debe estar familiarizado con él, porque lo verá en el código de otras personas. Puede ser difícil de leer, porque a menudo mezcla múltiples ocurrencias de la misma variable. Por ejemplo, un código como el siguiente es bastante popular: $saved = $saved >= $new ? $saved : $new; Si lo desmontas cuidadosamente, puedes descubrir qué hace este código: $saved = // Set the value of $saved to... $saved >= $new // Check $saved against $new ? // Yes, comparison is true ... $saved // ... so assign the current value of $saved : // No, comparison is false ... $new; // ... so assign the value of $new
  • 19. Es una forma concisa de realizar un seguimiento del mayor valor que ha visto a medida que avanza un programa. Guarda el valor más grande en $saved y lo compara con $new cada vez que obtiene un nuevo valor. Programadores familiarizados con el operador ? lo encuentra más conveniente que si las declaraciones para tales comparaciones cortas. Cuando no se utiliza para escribir código compacto, se usa generalmente para tomar alguna decisión en línea, como cuando se prueba si una variable se establece antes de pasarla a una función. Looping (Bucle o Ciclo) Una de las mejores cosas de las computadoras es que pueden repetir el cálculo de tareas de forma rápida e incansable. A menudo, es posible que desee que un programa repita la misma secuencia de código una y otra vez hasta que algo suceda, como que un usuario ingrese un valor o alcance un final natural. Las diversas estructuras de bucle de PHP proporcionan la forma perfecta de hacerlo. Para ver cómo funciona esto, eche un vistazo a la Figura 4-4. Es muy similar a la metáfora de la carretera utilizada para ilustrar las declaraciones, excepto que el desvío también tiene una sección de bucle que, una vez que un vehículo ha ingresado, puede salir solo bajo las condiciones correctas del programa. Figura 4-4. Imaginar un bucle como parte de un diseño de autopista del programa Bucle Haga Mientras ( o Bucle While o Loop While) Volteemos el tablero del automóvil digital en el Ejemplo 4-26 en un bucle que comprueba continuamente el nivel de combustible mientras conduce, utilizando un ciclo while (Ejemplo 4-28). Example 4-28. Un Ciclo Haga Mientas o Bucle While <?php $fuel = 10; while ($fuel > 1) { // Keep driving ... echo "There's enough fuel";
  • 20. } ?> En realidad, es posible que prefiera mantener encendida una luz verde en lugar de texto de salida, pero el punto es que cualquier indicación positiva que desee hacer sobre el nivel de combustible se coloca dentro del ciclo while. Por cierto, si prueba este ejemplo por su cuenta, tenga en cuenta que seguirá imprimiendo la cadena hasta que haga clic en el botón Detener de su navegador. Para otro ejemplo de un ciclo while que muestra la tabla de 12 veces, vea el Ejemplo 4- 29. Ejemplo 4-29. Un Ciclo Haga Mientras Imprime 12 veces una tabla <?php $count = 1; while ($count <= 12) El tipo final de instrucción de bucle, el bucle for, también es el más poderoso, ya que combina las habilidades para configurar variables a medida que ingresa al bucle, prueba condiciones mientras itera bucles y modifica variables después de cada iteración. El ejemplo 4-33 muestra cómo se puede escribir el programa de la tabla de multiplicar con un ciclo for. Ejemplo 4-33. Salida para la table de tiempos dentro de un bucle for <?php for ($count = 1 ; $count <= 12 ; ++$count) echo "$count times 12 is " . $count * 12 . "<br>"; ?> ¿Ve cómo se ha reducido todo el código a una sola declaración que contiene una única instrucción condicional? Esto es lo que está pasando. Cada instrucción for toma tres parámetros:  Una expresión de inicialización  Una expresión de condición  Una expresión de modificación  Estos están separados por puntos y comas como este: for (expr1; expr2; expr3). Al comienzo de la primera iteración del ciclo, se ejecuta la expresión de inicialización. En el caso del código de tabla de tiempos, $count se inicializa al valor 1. Luego, cada vez que se pasa el ciclo, se prueba la expresión de condición (en este caso, $count <= 12), y el ciclo se ingresa solo si la condición es VERDADERA Finalmente, al final de cada NOTA Al igual que con las declaraciones if, notará que se requieren llaves para mantener las instrucciones dentro de las instrucciones while, a menos que haya una sola.
  • 21. iteración, se ejecuta la expresión de modificación. En el caso del código de tabla de tiempos, la variable $count se incrementa. Toda esta estructura elimina cualquier requisito para colocar los controles en un bucle dentro de su cuerpo, liberándolo solo para las afirmaciones que quiere que realice el bucle. Recuerde usar llaves con un bucle for si contendrá más de una instrucción, como en el Ejemplo 4-34. Example4-34. El ejemplo 4-33 con ciclo forloop from agregando corchetes <?php for ($count = 1 ; $count <= 12 ; ++$count) { echo "$count times 12 is " . $count * 12; echo "<br>"; } ?> Vamos a comparar cuándo usar los bucles for y while. El bucle for está explícitamente diseñado alrededor de un único valor que cambia regularmente. Por lo general, tiene un valor que se incrementa, como cuando se le pasa una lista de opciones de usuario y desea procesar cada una de las opciones una por una. Pero puedes transformar la variable como quieras. Una forma más compleja de la instrucción for incluso le permite realizar múltiples operaciones en cada uno de los tres parámetros: for ($i = 1, $j = 1 ; $i + $j < 10 ; $i++ , $j++) { // ... } Eso es complicado y no recomendado para usuarios nuevos. La clave es distinguir las comas de los puntos y comas. Los tres parámetros deben estar separados por punto y coma. Dentro de cada parámetro, las declaraciones múltiples se pueden separar por comas. Por lo tanto, en el ejemplo anterior, el primero y el tercer parámetro contienen cada uno dos declaraciones: $i = 1, $j = 1 // Initialize $i and $j $i + $j < 10 // Terminating condition $i++ , $j++ // Modify $i and $j at the end of each iteration Lo principal a tomar de este ejemplo es que debe separar las tres secciones de parámetros con punto y coma, no con comas (que deben usarse solo para separar instrucciones dentro de una sección de parámetros). Entonces, ¿cuándo es más adecuada una declaración while que una declaración for? Cuando su condición no depende de un cambio simple y regular a una variable. Por ejemplo, si desea verificar alguna entrada especial o error y finalizar el ciclo cuando ocurre, use una instrucción while.
  • 22. Rompiendo un Ciclo Del mismo modo que vio cómo salir de una declaración switch, también puede salir de un bucle for usando el mismo comando de salto. Este paso puede ser necesario cuando, por ejemplo, uno de sus estados de cuenta devuelve un error y el ciclo no puede seguir ejecutándose de manera segura. Un caso en el que esto puede ocurrir es cuando la escritura de un archivo devuelve un error, posiblemente porque el disco está lleno (consulte el Ejemplo 4-35). Ejemplo 4-35. Escribiendo un archive con un ciclo for y saliendo si ocurre un error de escritura <?php $fp = fopen("text.txt", 'wb'); for ($j = 0 ; $j < 100 ; ++$j) { $written = fwrite($fp, "data"); if ($written == FALSE) break; } fclose($fp); ?> Esta es la pieza de código más complicada que has visto hasta ahora, pero estás listo para ello. Examinaremos los comandos de manejo de archivos en un capítulo posterior, pero por ahora todo lo que necesita saber es que la primera línea abre el archivo text.txt para escribir en modo binario, y luego devuelve un puntero al archivo en la variable $ fp, que se usa más tarde para referirse al archivo abierto. Luego, el ciclo itera 100 veces (de 0 a 99) escribiendo los datos de cadena en el archivo. Después de cada escritura, a la variable $ written se le asigna un valor mediante la función fwrite que representa el número de caracteres escritos correctamente. Pero si hay un error, la función fwrite asigna el valor FALSE. El comportamiento de fwrite hace que sea fácil para el código verificar la variable $ written para ver si está establecido en FALSE y, si es así, para salir del bucle hacia la siguiente instrucción que cierra el archivo. Si buscas mejorar el código, la línea: if ($written == FALSE) break; puede ser simplificada usando el operador NOT COMO EN ESTE EJEMPLO if (!$written) break; De hecho, el par de instrucciones de bucle interno se puede acortar a la siguiente instrucción individual: if (!fwrite($fp, "data")) break;
  • 23. El comando break es incluso más poderoso de lo que piensas, porque si tienes un código anidado en más de una capa de la que necesitas salir, puedes seguir el comando break con un número para indicar de cuántos niveles salir, como en este caso: break 2; la Instrucción continue La instrucción continue es un poco como una declaración de interrupción, excepto que ordena a PHP detener el procesamiento del bucle actual y pasar directamente a su siguiente iteración. Entonces, en lugar de salir del ciclo completo, PHP sale solo de la iteración actual. Este enfoque puede ser útil en casos en los que sabe que no tiene sentido continuar la ejecución dentro del ciclo actual y desea guardar los ciclos del procesador o evitar que ocurra un error moviéndose directamente a la siguiente iteración del ciclo. En el ejemplo 4-36, se usa una instrucción continue para evitar que se emita un error de división por cero cuando la variable $j tiene un valor de 0. Example 4-36. Evitando los errores de división por cero usando continue <?php $j = 10; while ($j > −10) { $j--; if ($j == 0) continue; echo (10 / $j) . "<br>"; } ?> Para todos los valores de $j entre 10 y -10, con la excepción de 0, se muestra el resultado de calcular 10 dividido por $j. Pero para el caso particular de que $j sea 0, se emite la instrucción continue y la ejecución salta inmediatamente a la siguiente iteración del ciclo. Efectos implícito y explícito PHP es un lenguaje poco tipado que le permite declarar una variable y su tipo simplemente utilizándola. También convierte automáticamente valores de un tipo a otro siempre que sea necesario. Esto se llama conversión implícita. Sin embargo, puede haber ocasiones en que la conversión implícita de PHP no es lo que desea. En el ejemplo 4-37, tenga en cuenta que las entradas a la división son números enteros. Por defecto, PHP convierte la salida a punto flotante para que pueda dar el valor más preciso: 4.66 recurrente.
  • 24. Example 4-37. Esta Expresion retorna un numero de punto flotante <?php $a = 56; $b = 12; $c = $a / $b; echo $c; ?> Pero, ¿y si hubiéramos querido que $c fuera un número entero? Hay varias maneras en que podemos lograr esto, una de las cuales es forzar el resultado de $a / $b para convertirlo en un valor entero usando el tipo entero de conversión (int), como este: $c = (int) ($a / $b); Esto se llama lanzamiento explícito. Tenga en cuenta que para garantizar que el valor de toda la expresión se convierte en un entero, colocamos la expresión entre paréntesis. De lo contrario, solo la variable $a se habría convertido en un entero, un ejercicio sin sentido, ya que la división por $b todavía habría devuelto un número de coma flotante. Table 4-6. PHP’s cast types Cast type Description (int) (integer) Convierte a entero eliminando la parte decimales (bool) (boolean) Convierte a un Boolean. (float) (double) (real) Convierte a un numero de punto flotante (string) Convierte a caracteres (array) Convierte en un array (object) Convierte en un objeto. PHP Enlaces Dinamicos Debido a que PHP es un lenguaje de programación, y el resultado puede ser completamente diferente para cada usuario, es posible que un sitio web completo se ejecute desde una sola página web de PHP. Cada vez que el usuario hace clic en algo, los detalles pueden enviarse a la misma página web, que decide qué hacer a continuación de acuerdo con las diversas cookies y / u otros detalles de la sesión que pueda haber almacenado. NOTA Puede convertir explícitamente a los tipos que se muestran en la Tabla 4-6, pero generalmente puede evitar tener que usar un molde llamando a una de las funciones incorporadas de PHP. Por ejemplo, para obtener un valor entero, puede usar la función intval. Al igual que con algunas otras secciones de este libro, esta está principalmente aquí para ayudarlo a comprender el código de terceros que puede encontrar.
  • 25. Aunque es posible construir un sitio web completo de esta manera, no es recomendable, ya que su código fuente crecerá, crecerá y comenzará a ser difícil de manejar, ya que tiene que tener en cuenta todas las acciones posibles que un usuario podría tomar. En cambio, es mucho más sensato dividir el desarrollo de su sitio web en diferentes partes. Por ejemplo, un proceso distinto es registrarse en un sitio web, junto con todas las comprobaciones que esto implica para validar una dirección de correo electrónico, determinar si ya se tomó un nombre de usuario, y así sucesivamente. Un segundo módulo podría ser uno para iniciar sesión en los usuarios antes de entregarlos a la parte principal de su sitio web. Entonces, es posible que tenga un módulo de mensajería con la posibilidad de que los usuarios dejen comentarios, un módulo que contenga enlaces e información útil, otro que permita la carga de imágenes, y más. Siempre que haya creado una forma de rastrear a su usuario a través de su sitio web mediante cookies o variables de sesión (que veremos más de cerca en capítulos posteriores), puede dividir su sitio web en secciones sensibles de código PHP. , cada uno autónomo, y por lo tanto, disfrute de un futuro mucho más fácil desarrollando cada nueva característica y manteniendo las antiguas. Enlaces Dinamicos en Acción Una de las aplicaciones más populares impulsadas por PHP en la Web hoy en día es la plataforma de blogs WordPress (vea la Figura 4-5). Como blogger o lector de blogs, puede que no te des cuenta, pero a cada sección principal se le ha asignado su propio archivo PHP principal, y se han colocado una gran cantidad de funciones genéricas compartidas en archivos separados que están incluidos en las páginas principales de PHP. según sea necesario. Toda la plataforma se mantiene junto con el seguimiento de la sesión detrás de escena, por lo que apenas sabe cuándo está pasando de una subsección a otra. Por lo tanto, como desarrollador web, si desea ajustar WordPress, es fácil encontrar el archivo particular que necesita, modificarlo y probarlo y depurarlo sin tener que lidiar con partes no conectadas del programa. La próxima vez que use WordPress, observe la barra de direcciones de su navegador, especialmente si está administrando un blog, y notará algunos de los diferentes archivos PHP que utiliza.
  • 26. Figura 4-5. La plataforma de blogs de WordPress está escrita en PHP Este capítulo ha cubierto bastante terreno, y ahora usted debería ser capaz de armar sus propios pequeños programas de PHP. Pero antes de hacerlo, y antes de continuar con el siguiente capítulo sobre funciones y objetos, es posible que desee probar su nuevo conocimiento en las siguientes preguntas. Preguntas 1. ¿Qué valores subyacentes reales están representados por VERDADERO y FALSO? 2. ¿Cuáles son las dos formas más simples de expresiones? 3. ¿Cuál es la diferencia entre operadores unarios, binarios y ternarios? 4. ¿Cuál es la mejor manera de forzar la precedencia de su propio operador? 5. ¿Qué se entiende por asociatividad del operador? 6. ¿Cuándo usarías el operador === (identidad)? 7. Nombra los tres tipos de declaraciones condicionales. 8. ¿Qué comando puede usar para omitir la iteración actual de un bucle y pasar al siguiente? 9. ¿Por qué un bucle for es más poderoso que un bucle while? 10. ¿Cómo las instrucciones if y while interpretan expresiones condicionales de diferentes tipos de datos? Vea el Capítulo 4 Respuestas en el Apéndice A para las respuestas a estas preguntas.