Operadores (2 de 2) PHP 5

Operador ternario
Hasta ahora, los operadores que hemos visto son capaces de manejar uno o dos operandos. El operador ternario evalúa un operando, y dependiendo si es true o false, evalúa el segundo operador o el tercero.
El orden es el siguiente, el operador que se quiere evaluar se pone delante del símbolo "?", justo después se coloca la expresión que se ejecutará si la evaluación anterior es true y por último se coloca el símbolo ":" y la expresión que se ejecutará si es false.
La salida es: Eres un adulto

Operadores bit a bit
Estos operadores son los mas complicados de entender si no conoce la lógica binaria, es posible que no utilice estos operadores nunca, así que no te preocupes. Estos operadores utilizan las variables a nivel bajo, es decir, tal y como se almacenan en la memoria física, y comparan bit a bit los valores.


En el ejemplo se comparan bit a bit $numero1  con el valor 5 (101 en binario) y $numero2 con el valor 6 (110 en binario), el operador es "&", un "Y", es decir si las parejas de bit son ambas true (1) el resultado es true (1), si alguna de ellas es false (0), la evaluación es false (0).

Si comparamos las variables en binario, la primera pareja de bit (de derecha a izquierda siempre), es true y false, el resultado es false (0), la segunda pareja es false y true, resultado false (0) y la última pareja es true y true, el resultado es true (1), es decir 100 en binario que en decimal es 4.

Los operadores bit a bit son

  • $a & $b, operador "Y", si las parejas de bits son true, el resultado es true.
  • $a | $b, operador "O", si algún bit de la pareja es true, el resultado es true.
  • $a ^ $b, operador "O exclusivo", si un bit de la pareja es true y el otro false, el resultado es true.
  • ~$a, operador "NO o negación", los bits true los cambia a false y también cambia el bit referente al signo positivo o negativo.
  • $a << $b, desplazamiento a la izquierda de bits, este operador desplaza a la izquierda los bits de la variable $a tantos bits como indique la variable $b.
  • $a >> $b, desplazamiento a la derecha de bits, este operador desplaza a la derecha los bits de la variable $a tantos bits como indique la variable $b.


Operadores de asignación combinados
En ocasiones se nos presenta la necesidad de incrementar o disminuir un valor en 1. Para estos casos PHP 5 consta de unos operadores combinados que permiten asignar rápidamente incrementos de valor, concatenaciones de caracteres...

  • $a++, incremento, es lo mismo que $a = $a + 1
  • $a--, decremento, es lo mismo que $a = $a - 1
  • ++$a, incremento, es lo mismo que $a = $a + 1
  • --$a, decremento, es lo mismo que $a = $a - 1
  • $a += $b, suma, es lo mismo que $a = $a + $b
  • $a -= $b, resta, es lo mismo que $a = $a - $b
  • $a *= $b, multiplicación, es lo mismo que $a = $a * $b
  • $a /= $b, división, es lo mismo que $a = $a / $b
  • $a %= $b, módulo, es lo mismo que $a = $a % $b
  • $a &= $b, Y, es lo mismo a $a = $a & $b
  • $a |= $b, O, es lo mismo a $a = $a | $b
  • $a ^= $b, O exclusiva, es lo mismo que $a = $a ^ $b
  • $a .= $b, concatenación, es lo mismo que $a = $a . $b
  • $a >>= $b, desplazamiento a la derecha, es lo mismo que $a = $a >> $b
  • $a <<= $b, desplazamiento a la izquierda, es lo mismo que $a = $a << $b
OJO, los operadores de incremento y decremento pueden aparecer, tanto a la derecha como a la izquierda de la variable. Esta posición influye en el orden en la que se asigna y de incremente.


Los valores de $resultado1 y $resultado2 difieren únicamente por el orden de los operadores de incremento. Cuando el operador se encuentra a la izquierda de la variable, primero se ejecuta el incremento a dicho número y luego se ejecuta la asignación, como vemos $numero que es 10 se convierte en 11 y se almacena en $resultado1, cuando aparece el operador a la derecha, primero se asigna del valor y luego se incrementa, $numero que es 10 se asigna a $resultado2, y luego se incrementa $numero1.


Operador de ejecución
Podemos ejecutar comandos del sistema con PHP 5 mediante el uso de las comillas invertidas `comando`.


Como mi sistema es Windows, utilizo el comando "dir" que lista todos los archivos de un directorio. Si os encontráis en un sistema Unix o gnuLinux, podéis utilizar el comando "ls" que tiene los mismos efectos. Puntualizo también la utilización de secuencias de escape para el uso de las barras invertidas "\", de modo contrario, dará error.

Por último decir que si tenéis configurado PHP con "safe_mode" habilitado, el comando no dará resultado, al igual que con la función shell_exec(), esta función hace exactamente lo mismo que las comillas invertidas.




Operador de supresión de errores
Las funciones de PHP 5 muestran errores cuando algo va mal o falla, por ejemplo utilizamos la función fopen(), para abrir un fichero, si este fichero no existe saldrá un mensaje de error. Para evitar esto, colocamos el operador de supresión de errores "@" justo delante de la función, así evitamos que salga el error y el programa sigue ejecutándose.

La salida es únicamente el echo()


Precedencia de los operadores
Conocer el orden de precedencia de los operadores es de suma importancia ya que podemos cometer errores por dicha causa. Por ejemplo si tenemos esta operación "10 / 5 + 5", puede haber dos resultados posibles dependiendo del operador que se ejecute antes, 7 si se ejecuta antes la división y 1 si lo hace antes la suma. Pos ello aquí os dejo la lista completa de todos los operadores en orden de precedencia, de mayor a menor.

  1. ( ) , paréntesis de preferencia
  2. new , instancia de objeto
  3. [ ] , array
  4. ! , NO lógico
  5. - , signo menos.
  6. ++ -- , incremento, decremento
  7. @ , supresión de errores
  8. * / % , multiplicación, división y módulo
  9. + - . , suma, resta y concatenación
  10. << >> , desplazamiento a la izquierda y a la derecha
  11. < <= > >= , menor, menor que, mayor, mayor que
  12. == != , igual, no igual
  13. & , Y
  14. ^ , O exclusivo
  15. | , O
  16. && , Y lógico
  17. || , O lógico
  18. ? : , condicional ternario
  19. = += -= .= *= /= %= &= |= <<= >>= , asignación
  20. and , Y lógico
  21. xor , O exclusivo
  22. or , O lógico
Por último comentar que el operador paréntesis ( ), tiene la propiedad de dar preferencia en la evaluación de todos los operadores que contiene, tal y como muestra el ejemplo.



Según nuestra tabla, la multiplicación se realizaría antes que la suma, pero al utilizar los paréntesis en la segunda operación, cambiamos la precedencia de las operaciones y el resultado es completamente distinto.

Comentarios

  1. Holaa, buenas, esta es una tarea de php que tengo que hacer y no se como hacerlo, sabrias codificar este probelma ?
    Estos son los pasos que nos pasó a nosotros, con los que debemos hacer el programa php ...
    1. Solicitar al usuario 9 números de 9 bits
    2. Mostar por pantalla la matriz de 9x9
    3. Solicitar al usuario tipo de Paridad (Paridad Par / Paridad Impar)
    4. Generar el bit de paridad horizontal y vertical
    5. Mostar por pantalla la matriz de 10x10 en el que se ha generado una fila y una columna extra con la paridad obtenida por fila y por columna

    ResponderEliminar
  2. Me llamo Daniel, y soy la persona que te acaba de proponer la tarea esta, si me ayudas con esto , me harias una gran ayuda por favor ...

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Calcular factorial de un numero en JAVA

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA