|
|
Línea 81: |
Línea 81: |
| *El operador de ejecución (` `) se utiliza para ejecutar comandos del sistema y devolver su salida. | | *El operador de ejecución (` `) se utiliza para ejecutar comandos del sistema y devolver su salida. |
| }} | | }} |
| + | |
| + | ===Precedencia de Operadores en PHP=== |
| + | |
| + | * La '''precedencia''' de los operadores define el orden en que se evalúan cuando hay múltiples operadores en una expresión. |
| + | * Sigue las reglas básicas de las matemáticas: |
| + | - La '''multiplicación''' y '''división''' tienen mayor prioridad que la '''suma''' y la '''resta'''. |
| + | - Los '''paréntesis''' siempre tienen la mayor precedencia. |
| + | * Cuando varios operadores tienen la misma precedencia, la '''asociatividad''' determina cómo se agrupan: |
| + | - Ejemplo (asociatividad izquierda): `1 + 2 + 3` se evalúa como `(1 + 2) + 3`. |
| + | - Ejemplo (asociatividad derecha): `$x = $y = $z` se evalúa como `$x = ($y = $z)`. |
| + | * Algunos operadores no tienen asociatividad y no pueden combinarse directamente. |
| + | - Ejemplo incorrecto: `1 < 2 > 1`. |
| + | |
| + | '''Nota importante:''' Usar paréntesis puede hacer que las expresiones sean más legibles, aunque no sean necesarios. |
| + | |
| + | ===Tabla de Precedencia de Operadores=== |
| + | |
| + | {| class="wikitable" |
| + | |+ style="background:#004080; color:white; font-size:1.25em;" | '''Precedencia y Asociatividad de Operadores en PHP''' |
| + | |- |
| + | ! style="background:#0066CC; color:white;" | '''Asociatividad''' || '''Operadores''' |
| + | |- |
| + | | style="background:#E6F0FF;" | No asociativo || `clone`, `new` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `[` |
| + | |- |
| + | | style="background:#E6F0FF;" | Derecha || `**` |
| + | |- |
| + | | style="background:#FFFFFF;" | Derecha || `++`, `--`, `~`, `(int)`, `(float)`, `(string)`, `(array)`, `(object)`, `(bool)`, `@` |
| + | |- |
| + | | style="background:#E6F0FF;" | No asociativo || `instanceof` |
| + | |- |
| + | | style="background:#FFFFFF;" | Derecha || `!` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `*`, `/`, `%` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `+`, `-`, `.` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `<<`, `>>` |
| + | |- |
| + | | style="background:#FFFFFF;" | No asociativo || `<`, `<=`, `>`, `>=` |
| + | |- |
| + | | style="background:#E6F0FF;" | No asociativo || `==`, `!=`, `===`, `!==`, `<>` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `&` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `^` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `|` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `&&` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `||` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `?:` |
| + | |- |
| + | | style="background:#FFFFFF;" | Derecha || `=`, `+=`, `-=`, `*=`, `**=`, `/=`, `.=`, `%=`, `&=`, `/=`, `^=`, `<<=`, `>>=`, `=>` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `and` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `xor` |
| + | |- |
| + | | style="background:#E6F0FF;" | Izquierda || `or` |
| + | |- |
| + | | style="background:#FFFFFF;" | Izquierda || `,` |
| + | |} |
| | | |
| ====Operadores de expresiones numéricas==== | | ====Operadores de expresiones numéricas==== |
(: Las expresiones son piezas fundamentales en cualquier lenguaje de programación. Es importante identificar sus partes (operadores y operandos) para entender cómo funciona el código.
)
Operadores
Los operadores son símbolos que realizan acciones sobre operandos y generan un resultado.
Existen diferentes tipos de operadores en función del tipo de operandos y el resultado esperado.
OPERADORES HABITUALES EN PHP
Tipo de Operador |
Operador |
Tipo de Expresión
|
Operadores aritméticos |
+ - * / % ** |
Numérica
|
Operadores lógicos |
AND OR && || ! |
Lógica
|
Operadores de comparación |
== != < > <= >= <=> ?? |
Lógica
|
Operadores de auto incremento/decremento |
++$a $a++ --$a $a-- |
Numérica
|
Operadores de string (concatenación) |
. .= |
String
|
OTROS OPERADORES MENOS HABITUALES
Tipo de Operador |
Operador |
Tipo de Expresión
|
Operadores de asignación simple |
= |
Valor asignado
|
Operadores de asignación compuesta |
+= -= *= /= %= **= .= |
Numérica
|
Operadores de asignación por referencia |
& |
Valor referenciado
|
Operadores bit a bit |
& | ^ ~ << >> |
Numérica
|
Operador de control de errores |
@ |
Silencia errores
|
Operador de ejecución |
`comando` |
Resultado del comando ejecutado
|
- Notas importantes
-
- Algunos operadores, como los de control de errores (@), deben usarse con cuidado, ya que pueden ocultar errores importantes en el código.
- Los operadores de asignación compuesta permiten realizar operaciones y asignar el resultado en un solo paso.
- El operador de ejecución (` `) se utiliza para ejecutar comandos del sistema y devolver su salida.
|
Precedencia de Operadores en PHP
- La precedencia de los operadores define el orden en que se evalúan cuando hay múltiples operadores en una expresión.
- Sigue las reglas básicas de las matemáticas:
- La multiplicación y división tienen mayor prioridad que la suma y la resta.
- Los paréntesis siempre tienen la mayor precedencia.
- Cuando varios operadores tienen la misma precedencia, la asociatividad determina cómo se agrupan:
- Ejemplo (asociatividad izquierda): `1 + 2 + 3` se evalúa como `(1 + 2) + 3`.
- Ejemplo (asociatividad derecha): `$x = $y = $z` se evalúa como `$x = ($y = $z)`.
- Algunos operadores no tienen asociatividad y no pueden combinarse directamente.
- Ejemplo incorrecto: `1 < 2 > 1`.
Nota importante: Usar paréntesis puede hacer que las expresiones sean más legibles, aunque no sean necesarios.
Tabla de Precedencia de Operadores
Precedencia y Asociatividad de Operadores en PHP
Asociatividad |
Operadores
|
No asociativo |
`clone`, `new`
|
Izquierda |
`[`
|
Derecha |
`**`
|
Derecha |
`++`, `--`, `~`, `(int)`, `(float)`, `(string)`, `(array)`, `(object)`, `(bool)`, `@`
|
No asociativo |
`instanceof`
|
Derecha |
`!`
|
Izquierda |
`*`, `/`, `%`
|
Izquierda |
`+`, `-`, `.`
|
Izquierda |
`<<`, `>>`
|
No asociativo |
`<`, `<=`, `>`, `>=`
|
No asociativo |
`==`, `!=`, `===`, `!==`, `<>`
|
Izquierda |
`&`
|
Izquierda |
`^`
|
Izquierda |
`
|
Izquierda |
`&&`
|
Izquierda |
` |
`
|
Izquierda |
`?:`
|
Derecha |
`=`, `+=`, `-=`, `*=`, `**=`, `/=`, `.=`, `%=`, `&=`, `/=`, `^=`, `<<=`, `>>=`, `=>`
|
Izquierda |
`and`
|
Izquierda |
`xor`
|
Izquierda |
`or`
|
Izquierda |
`,`
|
Operadores de expresiones numéricas
- Intervienen con valores numéricos y retorna un número como resultado de su evaluación
|
- Aritméticos (+,-,*,/,%,**)
- Autoincremente/decremento(++ --)
- Asignación compuesta (los aritmétcios segidos de una asignación += -= *= ....)
1.- Operadores aritméticos
- Cuando haya varios en una operación, hay que tener cuidado con la preferencia. Mejor esplicitarla con paréntesis
|
Qué ejecutaría el siguiente código
- Mejor ponerlo así
Ejecución |
---|
$num = 5+6*8-4/2;
echo "<h1>Valor de número $num</h1>";
$num = 5+(6*8)-(4/2);
$num = 5+48-2;
$num = 53-2;
echo "<h1>Valor de número $num</h1>";
- Salida
|
|
- El operador quizá menos utilizado es el módulo(%) y el exponente(**).
(: El módulo se usa mucho para ver si un número es o no divisible por otro.)
Actividad
- Buscar todos los números divisibles por 3 del 1 al 100
Posible solución |
---|
$lista = null;
for($n=1; $n<=100; $n++){
if ($n%3==0)
$lista.="$n, ";
}
echo "<h1>$lista</h1>";
- Salida
|
(: En el ejemplo anterior, al final sale una coma de más, que ya veremos cómo quitarla.)
|
- El exponente consiste en elevar un número a otro
Actividad
- Obtenerlo las diferentes potencias de 2 hasta elevarlo a 15
- 21 22 23...215
Posible solución |
---|
for($n=1; $n<=15; $n++){
echo "2<sup>$n</sup>=".(2**$n)."<br />";
}
- Salida
|
|
Autoincremente / Decremento
- el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
- El el caso pre, primero incrementa y luego toma el valor
- El el caso post, primero toma el valor y luego incrementa
Title: forma de usar los operadores
- Pre es anteponiendo el operador
- Post es posponiéndolo
|
- Para muchos casos es lo mismo hacerlo pre que post. Esto ocurre cuando en la instrucción solo haga eso
$a=5;
$a++;
echo "Valor de a es $a";
Es igual que
$a=5;
++$a;
echo "Valor de a es $a";
- En ambos casos la salida dará el valor 6
Pero
$a=5;
echo "Valor de a es ".++$a."<br />";
echo "Valor de a es $a<br />";
No es igual que
$a=5;
echo "Valor de a es ".$a++."<br />";
echo "Valor de a es $a<br />";
}}