Plantilla:ManuelRomero/PHP/OperadoresExpresiones
Contenido
- 1 Operadores y expresiones
- 1.1 Operadores
- 1.2 Precedencia de Operadores en PHP
- 1.3 Tabla de Precedencia de Operadores
- 1.4 Operadores Aritméticos
- 1.5 Operadores de Incremento y Decremento
- 1.6 Operadores de Asignación
- 1.7 Resumen
- 1.8 Actividad Práctica
- 1.8.1 Operadores con asignación en una misma variable
- 1.8.2 Operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
- 1.8.3 operadores de concatenacón( .) concatena cadena de caracteres.
- 1.8.4 Operadores de asignación (= , =>)
- 1.8.5 Operadores de ejecución (``)
- 1.8.6 Operadores lógicos (and,&&, or, ||, xor !)
Operadores y expresiones
Una expresión es una parte esencial de las frases en un lenguaje de programación. |
|
//Instruccion: $resultado = 5+3; // Expresión => 5+3 // Operador => + // Operandos => el 5 y el 3 // Resultado => 8 //Tipo de expresión => Aritmética, lo marca el operador
|
(: 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.
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 o String |
Operadores de string (concatenación) | . .= | String |
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 |
|
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
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 Aritméticos
Los operadores aritméticos en PHP son similares a los de las matemáticas y realizan operaciones básicas.
Operación | Representación | Descripción |
---|---|---|
Suma | $x + $y |
Devuelve la suma de $x y $y. |
Resta | $x - $y |
Devuelve la diferencia entre $x y $y. |
Multiplicación | $x * $y |
Devuelve el producto de $x y $y. |
División | $x / $y |
Devuelve el cociente de $x dividido por $y. Si ambos son divisibles, devuelve un entero; de lo contrario, un flotante. |
Módulo | $x % $y |
Devuelve el resto de dividir $x entre $y. Si $x o $y son flotantes, se transforman en enteros antes de la operación. |
Exponenciación | $x ** $y |
Eleva $x a la potencia de $y. |
Negación | -$x |
Cambia el signo de $x. |
Notas importantes:
- En módulo, el signo del resultado dependerá del dividendo.
-5 % 3
-2
- El exponente eleva un número a otro. Ejemplo: devolverá
2 ** 3
.8
Ejemplos Prácticos
1. Preferencia de Operadores:
$num = 5 + 6 * 8 - 4 / 2; // Mejor usar paréntesis para mayor claridad: $num = 5 + (6 * 8) - (4 / 2);
Ejecución paso a paso:
$num = 5 + 48 - 2; $num = 53 - 2; $num = 51;
2. Uso del módulo:
3. Exponenciación:
---
Operadores de Incremento y Decremento
Los operadores de incremento y decremento permiten aumentar o reducir en 1 el valor de una variable.
Tipo | Representación | Descripción |
---|---|---|
Pre-incremento | ++$a |
Incrementa el valor de $a antes de usarlo. |
Post-incremento | $a++ |
Usa el valor de $a y luego lo incrementa. |
Pre-decremento | --$a |
Decrementa el valor de $a antes de usarlo. |
Post-decremento | $a-- |
Usa el valor de $a y luego lo decrementa. |
Ejemplo de Diferencias entre Pre y Post:
// Pre-incremento $a = 5; echo "Pre-incremento: " . ++$a; // Muestra 6 // Post-incremento $a = 5; echo "Post-incremento: " . $a++; // Muestra 5 echo "Nuevo valor: " . $a; // Muestra 6
(: Cuando los operadores de incremento/decremento están en una instrucción más compleja, su posición (pre o post) puede afectar el resultado.)
Operadores de Asignación
Los operadores de asignación permiten asignar un valor a una variable. Existen dos tipos principales:
- Básicos: Usan el operador "=" para asignar un valor.
- Combinados Combina un operador aritmético o de concatenación con la asignación. Siempre van precedidos por el punto antes de la operador antes de la asignación.
Operador de Asignación Básico
El operador "=" asigna un valor, pero no actúa como un igual matemático. La asignación retorna el valor que se asignó. Por ejemplo:
//Simple curiosidad que tiene consecuencias en las estructuras de control $x = 3; // La expresión $x = 3 tiene un valor de 3 echo $x; // Mostrará: 3
En el caso de los **arrays**, el operador "=>" se utiliza para asignar valores a claves nombradas:
$array = ["clave1" => "valor1", "clave2" => "valor2"]; echo $array["clave1"]; // Mostrará: valor1
Operadores de Asignación Combinados
Los operadores de asignación combinados permiten realizar una operación y asignar el resultado a la misma variable en un solo paso.
Ejemplo básico:
$x = 3; $x += 5; // Suma 5 a $x, $x=$x+3; //Esto es la misma acción que la instrucción anterior echo $x; // Mostrará: 8
Esto es equivalente a:
$x = $x + 5;
Otros operadores combinados:
$y = "Hola"; $y .= ", ¿Qué tal?"; // Concatenación echo $y; // Mostrará: Hola, ¿Qué tal?
Ejemplo con Operadores de Asignación Combinados
$b = 1; for ($a = 0; $a < 10; $a++) { $b *= 10; // Multiplica $b por 10 en cada iteración echo "Valor de \$b = " . $b . "<br>"; }
Salida del código anterior:
Valor de $b = 10 Valor de $b = 100 Valor de $b = 1000 Valor de $b = 10000 Valor de $b = 100000 Valor de $b = 1000000 Valor de $b = 10000000 Valor de $b = 100000000 Valor de $b = 1000000000 Valor de $b = 10000000000
Asignación por Referencia
La asignación por referencia permite que dos variables apunten al mismo valor, sin crear copias. Esto se realiza con el operador "&".
Ejemplo:
$x = 3; $y = &$x; // $y apunta a la misma referencia que $x echo "$x, $y"; // Mostrará: 3, 3 $x = 5; echo "$x, $y"; // Mostrará: 5, 5
(: Las referencias son similares a un alias o acceso directo en el sistema de archivos.)
Resumen
- Los operadores básicos asignan valores directamente.
- Los operadores combinados simplifican las expresiones cuando la misma variable participa en la operación.
- La asignación por referencia permite que múltiples variables compartan un mismo valor sin duplicarlo.
Actividad Práctica
Objetivo: Practicar con operadores de asignación básicos, combinados y por referencia.
1. Escribe un programa que utilice al menos dos operadores básicos y dos combinados. 2. Implementa un ejemplo de asignación por referencia. 3. Evalúa el resultado e incluye una breve explicación.
Plantilla de Ejemplo:
<?php // 1. Operadores básicos $x = 10; $y = "Hola"; // 2. Operadores combinados $x += 5; // $x es ahora 15 $y .= ", ¿Qué tal?"; // $y es ahora "Hola, ¿Qué tal?" // 3. Asignación por referencia $z = &$x; // $z apunta a la misma referencia que $x $z = 20; // Cambiar $z también afecta a $x // Muestra los resultados echo "Valor de x: $x\n"; // Debería mostrar 20 echo "Valor de y: $y\n"; // Debería mostrar "Hola, ¿Qué tal?" echo "Valor de z: $z\n"; // Debería mostrar 20 ?>
Operadores con asignación en una misma variable
- Cuando la variable donde asignamos el resultado de la expresión forma parte de la expresión, la podemos simplificar
- Veamos el siguiente ejemplo
$a=$a*5;
- Es igual que hacer
$a*=5;
- Esto lo podemos hacer con cualquiera de los operadores aritméticos
Operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
- Este tipo de operadores genera un booleano como resultado de evaluar la expresión
Operador == Vs ===
$num=1; if ($num==true) echo '$num es igual a true<br>'; if ($num===true){ echo "esto nunca se ejecutará"; }else echo '$num no es exactamente igual a true';
- Operador == vs ===
- El código anterior generaría la siguiente salida
$num es igual a true $num no es exactamente igual a true
- Ver la sección comparación de tipos de la página oficial
http://php.net/manual/es/language.operators.comparison.php
operadores de concatenacón( .) concatena cadena de caracteres.
- El operador + no está sobre cargado, observa el siguiente código
$nombre="Maria"; $apellido = " de la Oh"; $nombreCompleto = $nombre.$apellido; echo "el valor de nombre completo es $nombreCompleto ---<br>"; $nombreCompleto = $nombre+$apellido; echo "el valor de nombre completo es $nombreCompleto --<br>";
- La salida del código anterior sería
el valor de nombre completo es Maria de la Oh --- el valor de nombre completo es 0 --
Operadores de asignación (= , =>)
- Se pueden combinar con los aritméticos (+=, *=, ...) y con los de concatenación (.=)
- En este caso el valor de la variable de la izquierda se toma como primero operando
- Operador de asignación
<?php $b=1; for ($a=0;$a<10;$a++){ $b*=10; echo 'valor de $b ='.$b.'<br>'; } ?>
- El código anterior genera la siguiente salida
valor de $b =10 valor de $b =100 valor de $b =1000 valor de $b =10000 valor de $b =100000 valor de $b =1000000 valor de $b =10000000 valor de $b =100000000 valor de $b =1000000000 valor de $b =10000000000
Operadores de ejecución (``)
- PHP proporciona un operador especial que permite ejecutar sentencias
- Observa el siguiente código
<?php $Discos = `df`; echo "<pre>$Discos</pre>"; ?>
- El código anterior generará la siguiente salida
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 86378608 6072360 75895384 8% / none 4 0 4 0% /sys/fs/cgroup udev 4023720 4 4023716 1% /dev tmpfs 806904 1384 805520 1% /run none 5120 0 5120 0% /run/lock none 4034504 6588 4027916 1% /run/shm none 102400 28 102372 1% /run/user /dev/sda7 101797224 40480360 56122728 42% /home
- Invocando funciones del sistema
- El operador anterior (comillas invertidas) es igual que la función shell_exec()
http://php.net/manual/es/function.shell-exec.php
Operadores lógicos (and,&&, or, ||, xor !)
http://php.net/manual/es/language.operators.logical.php
- Funcionan por cortocircuito
- El operador xor da verdad si los operando son de diferente valor uno true y el otro false
- La notación and y && representan el mismo operador, igual ocurre con or y ||
- La diferencia entre los operadores es la prioridad
http://php.net/manual/es/language.operators.precedence.php