Pregunta Referencia - ¿Qué significa este símbolo en PHP?


¿Que es esto?

Esta es una colección de preguntas que surgen de vez en cuando sobre la sintaxis en PHP. Esta es también una Wiki de la comunidad, por lo que todos están invitados a participar en el mantenimiento de esta lista.

¿Por qué es esto?

Solía ​​ser difícil encontrar preguntas sobre operadores y otros tokens de sintaxis.
La idea principal es tener enlaces a preguntas existentes sobre Desbordamiento de pila, por lo que es más fácil para nosotros hacer referencia a ellos, no copiar el contenido del Manual de PHP.

¹ Nota: Desde enero de 2013, Stack Overflow no admite caracteres especiales. Simplemente rodee los términos de búsqueda con comillas, p. [php] "==" vs "==="

¿Qué debería hacer aquí?

Si alguien te ha señalado aquí porque has hecho esa pregunta, encuentra la siguiente sintaxis. Las páginas vinculadas a la Manual de PHP junto con las preguntas vinculadas probablemente responderá a su pregunta. Si es así, se le anima a votar la respuesta. Esta lista no pretende ser un sustituto de la ayuda proporcionada por otros.

La lista

Si su token en particular no está en la lista a continuación, puede encontrarlo en el Lista de tokens de analizador.


&  Operadores bit a bit o Referencias


=&  Referencias


&=  Operadores bit a bit


&&  Operadores logicos


%  Operadores aritméticos


!!  Operadores logicos


@  Operadores de control de errores


?:  Operador Ternario


??  Operador de fusión nulo (desde PHP 7)


:  Sintaxis alternativa para estructuras de control, Operador Ternario


::  Operador de resolución de alcance


\  Espacios de nombres


->  Clases y objetos


=>  Arrays


^  Operadores bit a bit


>>  Operadores bit a bit


<<  Operadores bit a bit


<<<  Heredoc o Nowdoc


=  Operadores de Asignación


==  Operadores de comparación


===  Operadores de comparación


!==  Operadores de comparación


!=  Operadores de comparación


<>  Operadores de comparación


<=>  Operadores de comparación (desde PHP 7.0)


|  Operadores bit a bit


||  Operadores logicos


~  Operadores bit a bit


+  Operadores aritméticos, Operadores de matriz


+= y -=  Operadores de Asignación


++ y --  Operadores Incrementando / Decrementando


.=  Operadores de Asignación


.  Operadores de cadenas


,  Argumentos de función

,  Declaraciones de variables


$$  Variables variables


`  Operador de ejecución


<?=  Etiquetas cortas abiertas


[]  Arrays (sintaxis corta desde PHP 5.4)


<?  Etiquetas de apertura y cierre


...  Argumento desempacando (desde PHP 5.6)


**  Exponenciación (desde PHP 5.6)


#  Comentario de estilo de shell de una línea



3785


origen


Respuestas:


Operadores Incrementando / Decrementando

++ operador de incremento

-- operador de decremento

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

Estos pueden ir antes o después de la variable.

Si se coloca antes de la variable, la operación de incremento / decremento se realiza a la variable primero entonces el resultado es devuelto. Si se coloca después de la variable, la variable es primero devuelto, luego se realiza la operación de incremento / decremento.

Por ejemplo:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

Ejemplo en vivo

En el caso anterior ++$i se usa, ya que es más rápido. $i++ tendría los mismos resultados.

El preincremento es un poco más rápido, porque realmente incrementa la variable y luego 'devuelve' el resultado. El post-incremento crea una variable especial, copia allí el valor de la primera variable y solo después de que se usa la primera variable, reemplaza su valor por segundos.

Sin embargo, debes usar $apples--, ya que primero desea mostrar la cantidad actual de manzanas, y entonces quieres restar uno de eso.

También puede incrementar las letras en PHP:

$i = "a";
while ($i < "c") {
    echo $i++;
}

Una vez z es alcanzado aa es el siguiente, y así sucesivamente.

Tenga en cuenta que las variables de caracteres pueden incrementarse pero no decrementarse, y aun así solo son compatibles los caracteres ASCII simples (a-z y A-Z).


Stack Overflow Posts:


947



Operador bit a bit

¿Qué es un poco? Un bit es una representación de 1 o 0. Básicamente OFF (0) y ON (1)

¿Qué es un byte? Un byte está compuesto por 8 bits y el valor más alto de un byte es 255, lo que significa que cada bit está configurado. Veremos por qué el valor máximo de un byte es 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

Esta representación de 1 byte

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 byte)

Algunos ejemplos para una mejor comprensión

El operador "Y": &

$a =  9;
$b = 10;
echo $a & $b;

Esto generaría el número 8. ¿Por qué? Bueno, veamos usando nuestro ejemplo de tabla.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

Entonces, pueden ver en la tabla que el único bit que comparten juntos es el de 8 bits.

Segundo ejemplo

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

Los dos bits compartidos son 32 y 4, que cuando se agregan juntos devuelven 36.

El operador "O": |

$a =  9;
$b = 10;
echo $a | $b;

Esto generaría el número 11. ¿Por qué?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

Notará que tenemos 3 bits configurados, en las columnas 8, 2 y 1. Suma eso: 8 + 2 + 1 = 11.


359



_  Alias ​​para gettext () 

El carácter de subrayado '_' como en _() es un alias de la gettext() función.


224



Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"

209



Constantes mágicas: Aunque estos no son solo símbolos sino parte importante de esta familia de tokens. Hay ocho constantes mágicas que cambian según el lugar donde se usan.

__LINE__: El número de línea actual del archivo.

__FILE__: La ruta completa y el nombre del archivo. Si se usa dentro de una inclusión, se devuelve el nombre del archivo incluido. Desde PHP 4.0.2, __FILE__ siempre contiene una ruta absoluta con enlaces simbólicos resueltos, mientras que en versiones anteriores contenía una ruta relativa en algunas circunstancias.

__DIR__: El directorio del archivo. Si se usa dentro de una inclusión, se devuelve el directorio del archivo incluido. Esto es equivalente a dirname(__FILE__). Este nombre de directorio no tiene una barra inclinada a menos que sea el directorio raíz. (Agregado en PHP 5.3.0)

__FUNCTION__: El nombre de la función. (Agregado en PHP 4.3.0) A partir de PHP 5, esta constante devuelve el nombre de la función tal como fue declarada (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre está en minúscula.

__CLASS__: El nombre de la clase. (Agregado en PHP 4.3.0) A partir de PHP 5, esta constante devuelve el nombre de clase tal como fue declarado (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre está en minúscula. El nombre de la clase incluye el espacio de nombre en el que se declaró (p. Foo\Bar) Tenga en cuenta que a partir de PHP 5.4 __CLASS__ funciona también en rasgos. Cuando se usa en un método de rasgo, __CLASS__ es el nombre de la clase en la que se usa el rasgo

__TRAIT__: El nombre del rasgo (Agregado en PHP 5.4.0) A partir de PHP 5.4, esta constante devuelve el rasgo tal como fue declarado (distingue entre mayúsculas y minúsculas). El nombre de rasgo incluye el espacio de nombre en el que fue declarado (p. Foo\Bar)

__METHOD__: El nombre del método de clase. (Agregado en PHP 5.0.0) El nombre del método se devuelve tal como fue declarado (distingue entre mayúsculas y minúsculas).

__NAMESPACE__: El nombre del espacio de nombre actual (sensible a mayúsculas y minúsculas). Esta constante se define en tiempo de compilación (agregado en PHP 5.3.0).

Fuente


194



<=> Operador de nave espacial

Agregado en PHP 7

los operador de nave espacial  <=> es el último operador de comparación agregado en PHP 7. Es un no asociativo operador binario con la misma precedencia que los operadores de igualdad (==, !=, ===, !==) Este operador permite una comparación tripartita más simple entre operandos izquierdos y derechos.

El operador da como resultado una expresión entera de:

  • 0 cuando ambos operandos son iguales
  • Menos que 0 cuando el operando de la izquierda es menor que el operando de la mano derecha
  • Mas grande que 0 cuando el operando de la izquierda es mayor que el operando de la mano derecha

p.ej.

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

Una buena aplicación práctica del uso de este operador sería en los callbacks de tipo de comparación que se espera que devuelvan un entero cero, negativo o positivo en base a una comparación tridireccional entre dos valores. La función de comparación pasó a usort es uno de esos ejemplos.

Antes de PHP 7 escribirías ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

Desde PHP 7 puedes escribir ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

188



Tipo Operadores

instanceof se usa para determinar si una variable de PHP es un objeto instanciado de una cierta clase.

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

El ejemplo anterior dará como resultado:

bool(true)
bool(false)

Razón: Ejemplo anterior $a es un objeto de mclass así que use solo un mclass datos no instancia de con el sclass

Ejemplo con herencia

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

El ejemplo anterior dará como resultado:

bool(true)
bool(true)

Ejemplo con clon

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

El ejemplo anterior dará como resultado:

bool(true)
bool(true)

120



Una visión general de operadores en PHP:


Operadores logicos:

  • $ a && $ b: VERDADERO si ambos $ a y $ b son VERDADEROS.
  • $ a || $ b: VERDADERO si $ a o $ b es VERDADERO.
  • $ a xor $ b: VERDADERO si $ a o $ b es VERDADERO, pero no ambos.
  • ! $ a: VERDADERO si $ a no es VERDADERO.
  • $ a y $ b: VERDADERO si ambos $ a y $ b son VERDADEROS.
  • $ a o $ b: VERDADERO si $ a o $ b es VERDADERO.

Operadores de comparación:

  • $ a == $ b: VERDADERO si $ a es igual a $ b después del malabarismo de tipo.
  • $ a === $ b: VERDADERO si $ a es igual a $ b, y son del mismo tipo.
  • $ a! = $ b: VERDADERO si $ a no es igual a $ b después del malabarismo de tipo.
  • $ a <> $ b: VERDADERO si $ a no es igual a $ b después del malabarismo de tipo.
  • $ a! == $ b: VERDADERO si $ a no es igual a $ b, o no son del mismo tipo.
  • $ a <$ b : VERDADERO si $ a es estrictamente menor que $ b.
  • $ a> $ b : VERDADERO si $ a es estrictamente mayor que $ b.
  • $ a <= $ b : VERDADERO si $ a es menor o igual a $ b.
  • $ a> = $ b : VERDADERO si $ a es mayor o igual que $ b.
  • $ a <=> $ b : Un número entero menor, igual o mayor que cero cuando $ a es, respectivamente, menor, igual o mayor que $ b. Disponible a partir de PHP 7.
  • $ a? $ b: $ c : si $ a return $ b else devuelve $ c (operador ternario)
  • $ a ?? $ c : ¿Igual que $ a? $ a: $ c (operador coalescente nulo - requiere PHP> = 7)

Operadores aritméticos:

  • - $ a : Enfrente de $ a.
  • $ a + $ b : Suma de $ a y $ b.
  • $ a - $ b : Diferencia de $ a y $ b.
  • $ a * $ b : Producto de $ a y $ b.
  • $ a / $ b : Cociente de $ a y $ b.
  • $ a% $ b : Resto de $ a dividido por $ b.
  • $ a ** $ b : Resultado de subir $ a a la potencia $ b'th (introducido en PHP 5.6)

Operadores de Incremento / Decremento:

  • ++ $ a : Incrementa $ a por uno, luego devuelve $ a.
  • $ a ++ : Devuelve $ a, luego incrementa $ a por uno.
  • - $ a : Disminuye $ a por uno, luego devuelve $ a.
  • $ a-- : Devuelve $ a, luego disminuye $ a por uno.

Operadores bit a bit:

  • $ a & $ b : Los bits que se establecen en $ a y $ b se establecen.
  • $ a | $ b : Los bits que se establecen en $ a o $ b se establecen.
  • $ a ^ $ b : Los bits que están configurados en $ a o $ b pero no ambos están configurados.
  • ~ $ a : Los bits que están establecidos en $ a no están configurados, y viceversa.
  • $ a << $ b : Cambie los bits de $ a $ b pasos a la izquierda (cada paso significa "multiplicar por dos")
  • $ a >> $ b : Cambie los bits de $ a $ b pasos a la derecha (cada paso significa "dividir por dos")

Operadores de cadenas:

  • $ a. $ b : Concatenación de $ a y $ b.

Operadores de matriz:

  • $ a + $ b: Unión de $ a y $ b.
  • $ a == $ b : VERDADERO si $ a y $ b tienen los mismos pares clave / valor.
  • $ a === $ b : VERDADERO si $ a y $ b tienen los mismos pares clave / valor en el mismo orden y de los mismos tipos.
  • $ a! = $ b : VERDADERO si $ a no es igual a $ b.
  • $ a <> $ b : VERDADERO si $ a no es igual a $ b.
  • $ a! == $ b : VERDADERO si $ a no es idéntico a $ b.

Operadores de Asignación:

  • $ a = $ b : El valor de $ b se asigna a $ a
  • $ a + = $ b : Igual que $ a = $ a + $ b
  • $ a - = $ b : Igual que $ a = $ a - $ b
  • $ a * = $ b : Igual que $ a = $ a * $ b
  • $ a / = $ b : Igual que $ a = $ a / $ b
  • $ a% = $ b : Igual que $ a = $ a% $ b
  • $ a ** = $ b : Igual que $ a = $ a ** $ b
  • $ a. = $ b : Igual que $ a = $ a. $ b
  • $ a & = $ b : Igual que $ a = $ a & $ b
  • $ a | = $ b : Igual que $ a = $ a | $ b
  • $ a ^ = $ b : Igual que $ a = $ a ^ $ b
  • $ a << = $ b : Igual que $ a = $ a << $ b
  • $ a >> = $ b : Igual que $ a = $ a >> $ b

Nota

and operador y or el operador tiene menor prioridad que el operador de asignación =.

Esto significa que $a = true and false; es equivalente a ($a = true) and false.

En la mayoría de los casos, es probable que desee utilizar && y ||, que se comportan de una manera conocida en lenguajes como C, Java o JavaScript.


96



Operador de nave espacial <=> (Agregado en PHP 7)

Ejemplos para <=> Operador de nave espacial (PHP 7, fuente: manual de PHP):

Números enteros, flotantes, cadenas, matrices y objetos para comparación tripartita de variables.

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

72



{} Llaves

Y algunas palabras sobre la última publicación

$x[4] = 'd'; // it works
$x{4} = 'd'; // it works

$echo $x[4]; // it works
$echo $x{4}; // it works

$x[] = 'e'; // it works
$x{} = 'e'; // does not work

$x = [1, 2]; // it works
$x = {1, 2}; // does not work

echo "${x[4]}"; // it works
echo "${x{4}}"; // does not work

echo "{$x[4]}"; // it works
echo "{$x{4}}"; // it works

55