Referencia - ¿Qué significa este símbolo en PHP?
Frecuentes
Visto 721,163 equipos
4717
¿Que es esto?
Esta es una colección de preguntas que surgen de vez en cuando sobre la sintaxis en PHP. Esto también es un 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 en Stack Overflow, por lo que es más fácil para nosotros hacer referencia a ellas, no copiar el contenido del Manual de PHP.
Nota: Desde enero de 2013, Stack Overflow admite caracteres especiales. Simplemente rodee los términos de búsqueda entre comillas, p. Ej. [php] "==" vs "==="
¿Qué debo hacer aquí?
Si alguien le ha señalado aquí porque ha hecho tal pregunta, busque la sintaxis particular a continuación. Las páginas enlazadas al Manual de PHP junto con las preguntas vinculadas probablemente responderá a su pregunta en ese momento. Si es así, se le anima a votar a favor de la respuesta. Esta lista no reemplaza la ayuda que otros brindaron.
La Lista
Si su token en particular no aparece en la lista a continuación, puede encontrarlo en el Lista de tokens del analizador.
&
Operadores bit a bit or Referencias
- ¿Qué significa iniciar una función PHP con un ampersand?
- Comprender PHP y el operador (ampersand, bit a bit y)
- Operador PHP "&"
- Diferencia entre & y && en PHP
- ¿Qué significa "&" aquí en PHP?
- ¿Qué significa "&" en este caso?
- ¿Qué significa el signo "&" en PHP?
- ¿Qué significa esta firma (&) en PHP?
- ¿Cómo funciona el operador "&" en una función PHP?
- ¿Qué significa & in & 2 en PHP?
- ¿Cuándo debo usar un operador bit a bit?
- ¿Alguna vez es necesario usar ampersand delante de un objeto? PS
=&
Referencias
- Operador de asignación de referencia en PHP, = &
- ¿Qué significan los operadores "= &" y "& =" en PHP?
- ¿Qué hacen los operadores '& =' y '= &'?
- ¿Qué significa = & en PHP?
- 'AND' vs '&&' como operador
- Diferencia entre & y && en PHP
- ¿Hay alguna diferencia entre los operadores "y" y "&&" en PHP?
- PHP - y / o palabras clave
- ¿Qué significa el signo de porcentaje en PHP?
- ¿Qué es el operador PHP% y cómo lo uso en ejemplos del mundo real?
@
Operadores de control de errores
- ¿Cuál es el uso del símbolo @ en PHP?
- Símbolo 'arroba' antes del nombre de la variable en PHP: @ $ _ POST
- Funciones de PHP y @functions
- ¿Debería usar @ en mi código PHP?
- ¿Qué significa @ en PHP?
- ¿Qué son los operadores PHP "?" y ":" llamado y ¿qué hacen?
- ?: operador (el 'operador de Elvis') en PHP
- ¿Dónde puedo leer sobre los condicionales realizados con "?" y ":" (dos puntos)?
- Usando PHP 5.3?: Operador
??
Operador de fusión nula (desde PHP 7)
?string
?int
?array
?bool
?float
Declaración de tipo de retorno que acepta valores NULL (desde PHP 7.1)
- Declaración de tipo de retorno que acepta valores NULL
- método php tipo de argumento sugerencia con signo de interrogación (? tipo)
:
Sintaxis alternativa para estructuras de control, Operador ternario, Declaración de tipo de devolución
::
Operador de resolución de alcance
- ¿Qué significan dos dos puntos en PHP?
- ¿Cuál es el significado del nombre del token PHP T_PAAMAYIM_NEKUDOTAYIM?
- ¿Cuál es la diferencia entre :: (dos puntos) y -> (flecha) en PHP?
- ¿Qué son exactamente los enlaces estáticos tardíos en PHP?
- static :: staticFunctionName ()
- T_PAAMAYIM_NEKUDOTAYIM inesperado, esperando T_NS_Separator
- ¿Cómo se llama el operador PHP "->"?
- ¿Dónde usamos el operador de objeto "->" en PHP?
- ¿Cuál es la diferencia entre :: (dos puntos) y -> (flecha) en PHP?
- ¿Qué significa la sintaxis de PHP $ var1 -> $ var2?
- ¿Qué significa "->" / se refiere en PHP?
=>
Matrices
- ¿Qué significa "=>" en PHP?
- Uso de => en PHP
- ¿Qué significa $ k => $ v en foreach ($ ex como $ k => $ v)?
<<<
Heredoc o Nowdoc
- ¿Qué significa <<
- Expresión PHP <<
- En PHP, ¿qué representa "<<<"?
- Usando <<
- ¿Cuál es este tipo de sintaxis en PHP?
- ¿En qué se diferencian los operadores de comparación de igualdad (== doble igual) e identidad (=== triple igual) de PHP?
- PHP! = Y == operadores
- Los 3 iguales diferentes
- Malabarismo de tipos y comparaciones (estrictas) mayor / menor que en PHP
- ¿Qué significa "==="?
- ¿En qué se diferencian los operadores de comparación de igualdad (== doble igual) e identidad (=== triple igual) de PHP?
- Los 3 iguales diferentes
- Malabarismo de tipos y comparaciones (estrictas) mayor / menor que en PHP
- PHP! = Y == operadores
- ¿Hay alguna diferencia entre! == y! = En PHP?
- comparando,! == versus! =
- ¿Cuál es la diferencia entre <> y! =
- Operador PHP <>
- Operador <> de PHP
- ¿Cuál es la diferencia entre <> y! =
- Malabarismo de tipos y comparaciones (estrictas) mayor / menor que en PHP
<=>
Operadores de comparación (desde PHP 7.0)
- ¿Cuál es la diferencia entre | y || operadores?
- ¿Qué significa el uso de un solo tubo? En un argumento de función ¿hacer?
- ¿Cuál es la diferencia entre | y || operadores?
- PHP - y / o palabras clave
- ¿Qué hace exactamente || ¿significar?
- El comportamiento del operador or en PHP
+
Operadores aritméticos, Operadores de matrices
+=
y -=
Operadores de Asignación
++
y --
Operadores incrementales / decrecientes
- ¿Diferencia entre punto y coma al concatenar con eco versus retorno?
- Que hace un . (punto) hacer en PHP?
[]
Matrices (sintaxis corta desde PHP 5.4)
- Matrices PHP ... ¿Cuál es / son los significados de un corchete vacío?
- Cuál es el significado de []
- PHP array_push () frente a myArray []
- ¿Qué significa [] cuando lee desde una matriz PHP?
- Abreviatura de matrices: literal
$var = []
matriz vacía
<?
Etiquetas de apertura y cierre
...
Desembalaje de argumentos (desde PHP 5.6)
**
Exponenciación (desde PHP 5.6)
#
Comentario de estilo shell de una línea
?->
Llamadas de operador NullSafe (desde PHP 8.0)
20 Respuestas
1225
Operadores incrementales / decrecientes
++
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 en la variable la primera luego se devuelve el resultado. Si se coloca después de la variable, la variable es la primera devuelto, entonces 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";
}
En el caso anterior ++$i
se utiliza, 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 incremento posterior 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 el de la segunda.
Sin embargo, debe utilizar $apples--
, ya que primero, desea mostrar el número actual de manzanas, y luego quieres restarle uno.
También puede incrementar letras en PHP:
$i = "a";
while ($i < "c") {
echo $i++;
}
Once z
es alcanzado aa
es el siguiente, y así sucesivamente.
Tenga en cuenta que las variables de caracteres se pueden incrementar pero no disminuir y, aun así, solo se admiten caracteres ASCII simples (az y AZ).
Publicaciones de desbordamiento de pila:
respondido 12 nov., 18:08
Por el bien de todos, elimine la información en negrita acerca de que el incremento previo es infinitesimalmente más rápido. Este es el peor ejemplo absoluto de optimización prematura y este tipo de información no debería estar en la cabeza de las personas si recién están comenzando a aprender PHP. - Lotus Notes
@Lotus - Lo considero un hecho divertido. Si eres un principiante en PHP, o C ++, etc., parece bastante extraño que ++ i e i ++ sean lo suficientemente diferentes como para trabajar a diferentes velocidades. Lo encontré fascinante. - Pedro Ajtai
@Peter Ajtai Sí, es interesante, pero por la forma en que ha estructurado su publicación, hace que parezca uno de los principales hechos de PHP que es absolutamente vital para usar el lenguaje. - Lotus Notes
459
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 se compone de 8 bits y el valor más alto de un byte es 255, lo que significaría que todos los bits están establecidos. 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 daría como resultado 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, puede 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 suman devuelven 36.
El operador "O": |
$a = 9;
$b = 10;
echo $a | $b;
Esto daría como resultado 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 establecidos, en las columnas 8, 2 y 1. Sume esos: 8 + 2 + 1 = 11.
Respondido el 19 de Septiembre de 16 a las 13:09
¿Qué pasa si $ a tiene un valor superior a 255? - Aycan Yasit
@ AycanYaşıt La mayor parte del sistema operativo utiliza un sistema de 32 y 64 bits, lo que significa que el límite es mucho más de 255 (8 bits). - AlbertoSamuel
@ AycanYaşıt En realidad, la representación aquí con una longitud de byte ni siquiera es correcta, ya que incluso el entero más pequeño sigue siendo de 64 bits (8 bytes) en la memoria en una plataforma moderna de 64 bits. - kaii
¿Por qué and &
is 0 0 0 0 1 0 0 0
y or |
is 0 0 0 0 1 0 1 1
? - vi_real
321
<=>
Operador de nave espacial
Agregado en PHP 7
LA 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 de tres vías más simple entre los operandos del lado izquierdo y del lado derecho.
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 derecha - Más que
0
cuando el operando de la izquierda es mayor que el operando de la 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 las devoluciones de llamada de tipo de comparación que se espera que devuelvan un número entero cero, negativo o positivo basado en una comparación de tres vías 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;
// return -1 * ($a <=> $b); // for reversing order
});
Respondido 26 Abr '21, 01:04
No estoy seguro de cómo $a <=> $b
es diferente a $a - $b
- acelerar
@AcidoShout $a - $b
funciona para números, pero no para cadenas, objetos o matrices. - mcrumley
@mcrumley No, es peor que eso. En general $a - $b
ni siquiera funciona con números; funciona solo para enteros. No funciona para números que no son enteros, porque usort
lanza los valores de retorno de la función comparadora a int
, lo que significa que 0.5 se convierte en 0, lo que significa que dos números con una diferencia de menos de 1, como 4 y 4.6, pueden (dependiendo de cuál se pase como el primer argumento a su función de comparación) comparar incorrectamente como iguales. - marca amery
@MarkAmery la guía de migración no es el comportamiento documentado del operador. Para eso, desea consultar la sección de operadores de idioma del manual para php.net/language.operators.comparación el comportamiento real detrás de esto se basa en varias funciones de comparación de la API, como cuando está haciendo strcmp para cadenas, donde no puede garantizar el valor de retorno real en todos los casos. Claro, casi siempre es 1, 0 o -1, pero para los casos en los que no puede garantizarlo, como al envolver el strcmp de libc, ofrece el mismo comportamiento definido que la especificación subyacente para estar seguro: Jerife
@MarkAmery El punto aquí es no permitir que las personas confíen en un comportamiento indefinido. Para el único caso en el que alguien obtiene un valor que no es exactamente 1, 0 o -1, alguien presenta un informe de error pensando que hay algo mal en el idioma. Es por eso que documentamos que todo lo que podemos garantizar es que el valor será menos que, mayor queo igual a 0, y no necesariamente 1, 0 y -1. - Jerife
290
El carácter de subrayado '_' como en _()
es un alias para el gettext()
función.
Respondido 19 Feb 18, 08:02
¿Alguna idea de qué es la función de subrayado doble? __()
. Se usa en WordPress. No puedo encontrar una definición para eso dondequiera. Ejemplo de su uso: core.trac.wordpress.org/browser/tags/5.4/src/wp-admin/includes/…. Parece que para usar el WP image_size_names_choose()
filtrar, __()
debe usarse para agregar el "nombre corto" a la matriz de tamaños nombrados que desea agregar. - sherylhohman
@SherylHohman Parece que es una función de traducción. desarrollador.wordpress.org/reference/functions/__ - mohamed h
¡Muchas gracias! Envidio sus habilidades superiores en Google (y su vasto conocimiento de codificación) :-) - sherylhohman
283
Sintaxis | Nombre | Descripción |
---|---|---|
x == y |
Igualdad | true si xey tienen los mismos pares clave / valor |
x != y |
Desigualdad | true si x no es igual ay |
x === y |
Identidad | true si xey tienen los mismos pares clave / valoren el mismo orden y de los mismos tipos |
x !== y |
No identidad | true si x no es idéntico ay |
++x |
Pre-incremento | Incrementa x en uno, luego devuelve x |
x++ |
Post-incremento | Devuelve x, luego incrementa x en uno |
--x |
Pre-decremento | Disminuye x en uno, luego devuelve x |
x-- |
Post-decremento | Devuelve x, luego disminuye x en uno |
x and y |
Y | true si tanto x como y son true . Si x = 6, y = 3 entonces(x < 10 and y > 1) devoluciones true |
x && y |
Y | true si tanto x como y son true . Si x = 6, y = 3 entonces(x < 10 && y > 1) devoluciones true |
x or y |
Or | true si alguno de xoy es true . Si x = 6, y = 3 entonces(x < 10 or y > 10) devoluciones true |
x || y |
Or | true si alguno de xoy es true . Si x = 6, y = 3 entonces(x < 3 || y > 1) devoluciones true |
a . b |
Concatenación | Concatenar dos cadenas: "Hola". "Decir ah" |
Respondido 05 Feb 21, 23:02
245
Constantes mágicas: Aunque estos no son solo símbolos, sino una parte importante de esta familia de tokens. Hay ocho constantes mágicas que cambian dependiendo de dónde se utilicen.
__LINE__
: El número de línea actual del archivo.
__FILE__
: La ruta completa y el nombre de archivo 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 al final 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 se declaró (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre está en minúsculas.
__CLASS__
: El nombre de la clase. (Agregado en PHP 4.3.0) A partir de PHP 5, esta constante devuelve el nombre de la clase tal como se declaró (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre está en minúsculas. El nombre de la clase incluye el espacio de nombres en el que se declaró (p. Ej. 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 se declaró (distingue entre mayúsculas y minúsculas). El nombre del rasgo incluye el espacio de nombres en el que se declaró (p. Ej. Foo\Bar
).
__METHOD__
: El nombre del método de la clase. (Agregado en PHP 5.0.0) El nombre del método se devuelve como se declaró (distingue entre mayúsculas y minúsculas).
__NAMESPACE__
: El nombre del espacio de nombres actual (distingue entre mayúsculas y minúsculas). Esta constante se define en tiempo de compilación (agregada en PHP 5.3.0).
Respondido 21 Feb 14, 00:02
156
Operadores de tipo
instanceof
se utiliza para determinar si una variable de PHP es un objeto instanciado de una determinada 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 la mclass
así que usa 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 Clone
<?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)
respondido 13 mar '16, 01:03
Lo anterior también funciona con 'interfaces'. Esto es útil para verificar que una interfaz en particular esté disponible. - ryan vicente
144
Una visión general de operadores en PHP:
Operadores logicos:
- $ a && $ b: VERDADERO si tanto $ a como $ b son VERDADEROS.
- $ a || $ b: VERDADERO si $ a o $ b es VERDADERO.
- $ a xo $ b: VERDADERO si $ a o $ b es VERDADERO, pero no ambos.
- ! $ a: VERDADERO si $ a no es VERDADERO.
- $ ay $ b: VERDADERO si tanto $ a como $ 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 tipo de malabarismo.
- $ 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 tipo de malabarismo.
- $ a <> $ b: VERDADERO si $ a no es igual a $ b después del tipo de malabarismo.
- $ a! == $ b: VERDADERO si $ a no es igual a $ b, o si 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 que $ 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 devuelve $ b si no devuelve $ c (operador ternario)
- $ a ?? $ c : ¿Igual que $ a? $ a: $ c (operador de fusión nula - requiere PHP> = 7)
Operadores aritméticos:
- - $ a : Opuesto a $ a.
- $ a + $ b : Suma de $ ay $ b.
- $ a - $ b : Diferencia de $ ay $ b.
- $ a * $ b : Producto de $ ay $ b.
- $ a / $ b : Cociente de $ ay $ b.
- $ a% $ b : Resto de $ a dividido por $ b.
- $ a ** $ b : Resultado de elevar $ a a la potencia $ b'th (introducido en PHP 5.6)
Operadores incrementales / decrecientes:
- ++ $ a : Incrementa $ a en uno, luego devuelve $ a.
- $ a ++ : Devuelve $ a, luego incrementa $ a en uno.
- - $ a : Disminuye $ a en uno, luego devuelve $ a.
- $ a-- : Devuelve $ a, luego disminuye $ a en uno.
Operadores bit a bit:
- $ a y $ b : Se establecen los bits que se establecen tanto en $ a como en $ b.
- $ a | $ b : Se establecen los bits que se establecen en $ a o $ b.
- $ a ^ $ b : Se establecen los bits que se establecen en $ a o $ b pero no en ambos.
- ~ $ a : Los bits que se establecen en $ a no se establecen y viceversa.
- $ a << $ b : Desplaza los bits de $ a $ b pasos hacia la izquierda (cada paso significa "multiplicar por dos")
- $ a >> $ b : Mueve los bits de $ a $ b pasos hacia la derecha (cada paso significa "dividir por dos")
Operadores de cadenas:
- $ a. $ b : Concatenación de $ ay $ b.
Operadores de matrices:
- $ a + $ b : Unión de $ ay $ b.
- $ a == $ b : VERDADERO si $ ay $ b tienen los mismos pares clave / valor.
- $ a === $ b : VERDADERO si $ ay $ 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
- $ a ?? = $ b : El valor de $ b se asigna a $ a si $ a es nulo o no está definido (operador de asignación de fusión nula - requiere PHP> = 7.4)
Nota
and
operador y or
El operador tiene menor precedencia 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 probablemente desee utilizar &&
y ||
, que se comportan de una forma conocida en lenguajes como C, Java o JavaScript.
Respondido el 21 de enero de 21 a las 13:01
Hay un error en $a ?? $c
, dice que es lo mismo que $a ? $a : $c
, pero el operador ternario verifica si el valor es verdadero, por otro lado, la fusión nula verifica los valores nulos, por lo que, si $ a es 0, obtendrá 0 (porque 0 no es nulo), por ejemplo, si tiene: $a=0; $c=5;
luego $a?$a:$c
devuelve 5 y $a??$c
devuelve 0. - stramin
107
Operador de nave espacial <=>
(Agregado en PHP 7)
Ejemplos para <=>
Operador de nave espacial (PHP 7, Fuente: Manual de PHP):
Enteros, flotantes, cadenas, matrices y objetos para la comparación de variables de tres vías.
// 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
// Comparison is case-sensitive
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
Respondido el 20 de junio de 20 a las 10:06
76
{}
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
contestado el 23 de mayo de 17 a las 13:05
{''} notación para nombres de propiedad. echo $ peliculas-> pelicula -> {'grandes-lineas'} -> linea; se puede utilizar para acceder a datos en SimpleXMLElement. Quizás también se pueda usar en otros casos. php.net/manual/en/simplexml.ejemplos-basic.php - Andrés
69
Operador de fusión nulo (??)
Este operador se ha agregado en PHP 7.0 para el caso común de necesitar usar un operador ternario junto con isset()
. Devuelve su primer operando si existe y no es NULL
; de lo contrario, devuelve su segundo operando.
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
Respondido 16 Feb 18, 14:02
65
Cadenas PHP: Las cadenas de PHP se pueden especificar de cuatro formas, no solo de dos formas:
1) Cadenas de comillas individuales:
$string = 'This is my string'; // print This is my string
2) Cadenas de comillas dobles:
$str = 'string';
$string = "This is my $str"; // print This is my string
3) Heredoc:
$string = <<<EOD
This is my string
EOD; // print This is my string
4) Nowdoc (desde PHP 5.3.0):
$string = <<<'END_OF_STRING'
This is my string
END_OF_STRING; // print This is my string
Respondido 02 Feb 16, 13:02
@ Rizier123: ¿Qué significa "Heredocs no se puede usar para inicializar propiedades de clase. Desde PHP 5.3, esta limitación es válida solo para heredocs que contienen variables"? - PHPFan
50
PREGUNTA:
¿Qué =>
significa?
RESPONDER:
=>
¿Es el símbolo que los humanos decidimos usar para separar "Key" => "Value"
pares en matrices asociativas.
ELABORANDO:
Para entender esto, tenemos que saber qué son las matrices asociativas. Lo primero que surge cuando un programador convencional piensa en una matriz (en PHP) sería algo similar a:
$myArray1 = array(2016, "hello", 33);//option 1
$myArray2 = [2016, "hello", 33];//option 2
$myArray3 = [];//option 3
$myArray3[] = 2016;
$myArray3[] = "hello";
$myArray3[] = 33;
Donde, si quisiéramos llamar a la matriz en alguna parte posterior del código, podríamos hacer:
echo $myArray1[1];// output: hello
echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello
Hasta aquí todo bien. Sin embargo, como seres humanos, es posible que nos resulte difícil recordar ese índice [0]
de la matriz es el valor de la año 2016, índice [1]
de la matriz es un saludosy el índice [2]
de la matriz es un simple valor entero. La alternativa que tendríamos entonces es usar lo que se llama un Matriz asociativa. Una matriz asociativa tiene algunas diferencias con una Matriz secuencial
(que es lo que eran los casos anteriores ya que incrementan el índice usado en una secuencia predeterminada, incrementando en 1 para cada valor siguiente).
Diferencias (entre una matriz secuencial y asociativa):
Durante la declaración de una matriz asociativa, no solo incluye el
value
de lo que quieres poner en la matriz, pero también pones el valor del índice (llamadokey
) que desea usar al llamar a la matriz en partes posteriores del código. La siguiente sintaxis se utiliza durante su declaración:"key" => "value"
.Cuando se utiliza la matriz asociativa, el
key
El valor se colocaría dentro del índice de la matriz para recuperar el valor deseado.value
.
Por ejemplo:
$myArray1 = array(
"Year" => 2016,
"Greetings" => "hello",
"Integer_value" => 33);//option 1
$myArray2 = [
"Year" => 2016,
"Greetings" => "hello",
"Integer_value" => 33];//option 2
$myArray3 = [];//option 3
$myArray3["Year"] = 2016;
$myArray3["Greetings"] = "hello";
$myArray3["Integer_value"] = 33;
Y ahora, para recibir la misma salida que antes, el key
El valor se usaría en el índice de matrices:
echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello
echo $myArray3["Greetings"];// output: hello
PUNTO FINAL:
Por lo tanto, a partir del ejemplo anterior, es bastante fácil ver que el =>
El símbolo se utiliza para expresar la relación de una matriz asociativa entre cada uno de los key
y value
pares en una matriz DURANTE el inicio de los valores dentro de la matriz.
Respondido el 07 de diciembre de 20 a las 10:12
38
Pregunta:
¿Qué significa "&" aquí en PHP?
Operador PHP "&"
Hace la vida más fácil una vez que nos acostumbramos. (Ver el ejemplo a continuación con cuidado)
& Por lo general, comprueba que los bits que están configurados tanto en $ a como en $ b estén establecidos.
¿Ha notado siquiera cómo funcionan estas llamadas?
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
error_reporting(E_ALL & ~E_NOTICE);
error_reporting(E_ALL);
Entonces, detrás de todo lo anterior está el juego de operadores bit a bit y bits.
Un caso útil de estos son las configuraciones fáciles como las que se muestran a continuación, por lo que un solo campo entero puede almacenar miles de combos para usted.
La mayoría de la gente ya ha leído los documentos, pero no se basó en el caso de uso del mundo real de estos operadores bit a bit.
Ejemplo que te encantará
<?php
class Config {
// our constants must be 1,2,4,8,16,32,64 ....so on
const TYPE_CAT=1;
const TYPE_DOG=2;
const TYPE_LION=4;
const TYPE_RAT=8;
const TYPE_BIRD=16;
const TYPE_ALL=31;
private $config;
public function __construct($config){
$this->config=$config;
if($this->is(Config::TYPE_CAT)){
echo 'cat ';
}
if($this->is(Config::TYPE_DOG)){
echo 'dog ';
}
if($this->is(Config::TYPE_RAT)){
echo 'rat ';
}
if($this->is(Config::TYPE_LION)){
echo 'lion ';
}
if($this->is(Config::TYPE_BIRD)){
echo 'bird ';
}
echo "\n";
}
private function is($value){
return $this->config & $value;
}
}
new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird
respondido 20 mar '17, 05:03
31
==
se utiliza para comprobar la igualdad sin considerando variable tipo de datos
===
se utiliza para comprobar la igualdad de ambas La variable propuesta de y tipo de datos
Ejemplo
$a = 5
if ($a == 5)
- evaluará como verdaderoif ($a == '5')
- se evaluará como verdadero, porque al comparar ambos valores, PHP convierte internamente ese valor de cadena en un número entero y luego compara ambos valoresif ($a === 5)
- evaluará como verdaderoif ($a === '5')
- se evaluará como falso, porque el valor es 5, pero este valor 5 no es un número entero.
Respondido el 20 de junio de 20 a las 10:06
28
Operador Null Coalesce "??" (Agregado en PHP 7)
No es el nombre más atractivo para un operador, pero PHP 7 trae la fusión nula bastante útil, así que pensé en compartir un ejemplo.
En PHP 5, ya tenemos un operador ternario, que prueba un valor y luego devuelve el segundo elemento si devuelve verdadero y el tercero si no lo hace:
echo $count ? $count : 10; // outputs 10
También hay una abreviatura para eso que le permite omitir el segundo elemento si es el mismo que el primero: echo $ count?: 10; // también produce 10
En PHP 7 obtenemos adicionalmente el ?? operador que, en lugar de indicar una confusión extrema, que es la forma en que normalmente usaría dos signos de interrogación juntos, nos permite encadenar una cadena de valores. Leyendo de izquierda a derecha, el primer valor que existe y no es nulo es el valor que se devolverá.
// $a is not set
$b = 16;
echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16
Esta construcción es útil para dar prioridad a uno o más valores que provienen quizás de la entrada del usuario o de la configuración existente, y recurrir con seguridad a un valor predeterminado dado si falta esa configuración. Es una característica pequeña, pero sé que usaré tan pronto como mis aplicaciones se actualicen a PHP 7.
Respondido el 06 de diciembre de 17 a las 16:12
13
Declaración de tipo de retorno que acepta valores NULL
PHP 7 agrega soporte para declaraciones de tipo de retorno. De manera similar a las declaraciones de tipo de argumento, las declaraciones de tipo de retorno especifican el tipo de valor que se devolverá desde una función. Los mismos tipos están disponibles para declaraciones de tipo de retorno que están disponibles para declaraciones de tipo de argumento.
La escritura estricta también tiene un efecto en las declaraciones de tipo de retorno. En el modo débil predeterminado, los valores devueltos se forzarán al tipo correcto si aún no son de ese tipo. En modo fuerte, el valor devuelto debe ser del tipo correcto; de lo contrario, se lanzará un TypeError.
A partir de PHP 7.1.0, los valores de retorno se pueden marcar como anulables al anteponer el nombre del tipo con un signo de interrogación (?). Esto significa que la función devuelve el tipo especificado o NULL.
<?php
function get_item(): ?string {
if (isset($_GET['item'])) {
return $_GET['item'];
} else {
return null;
}
}
?>
contestado el 01 de mayo de 19 a las 09:05
11
Three DOTS como operador de Splat (...) (desde PHP 5.6)
PHP tiene un operador "..." (Tres puntos) que se conoce como Operador Splat. Se utiliza para pasar un número arbitrario de parámetros en una función y este tipo de función se llama Funciones Variadic. Tomemos ejemplos del uso de "..." (tres puntos).
Ejemplo 1:
<?php
function calculateNumbers(...$params){
$total = 0;
foreach($params as $v){
$total = $total + $v;
}
return $total;
}
echo calculateNumbers(10, 20, 30, 40, 50);
//Output 150
?>
Cada argumento de la función calculateNumbers () pasa a través de $ params como una matriz cuando se usa "…".
Hay muchas formas diferentes de utilizar el operador "...". A continuación algunos ejemplos:
Ejemplo 2:
<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
$total = $no1 + $no2 + $no3 + $no4 + $no5;
return $total;
}
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);
//Output 150
?>
Ejemplo 3:
<?php
function calculateNumbers(...$params){
$total = 0;
foreach($params as $v){
$total = $total + $v;
}
return $total;
}
$no1 = 70;
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers($no1, ...$numbers);
//Output 220
?>
Ejemplo 4:
<?php
function calculateNumbers(...$params){
$total = 0;
foreach($params as $v){
$total = $total + $v;
}
return $total;
}
$numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500);
echo calculateNumbers(...$numbers1, ...$numbers2);
//Output 1650
?>
Respondido el 30 de Septiembre de 19 a las 16:09
[TODO] Incluir nueva funcionalidad en PHP8 para usar el operador splat con "parámetros con nombre" ref: stackoverflow.com/a/64997399/2943403 - mickmackusa
8
Operador NullSafe "? ->" (posiblemente) desde php8
En PHP8 se ha aceptado este nuevo operador, puedes encontrar la documentación aquí. ?->
es el NullSafe Operator
, vuelve null
en caso de que intente invocar funciones u obtener valores de null
...
Ejemplos:
<?php
$obj = null;
$obj = $obj?->attr; //return null
$obj = ?->funct(); // return null
$obj = $objDrive->attr; // Error: Trying to get property 'attr' of non-object
?>
Respondido el 21 de Septiembre de 20 a las 16:09
Agregar esto se siente bastante prematuro, nadie verá este operador en ningún código en vivo, y es posible que ni siquiera se agregue. Sería mejor esperar hasta que los detalles estén finalizados y documentarlos adecuadamente. - IMSoP
@IMSoP estoy contigo, sin embargo me invitaron a hacerlo aquí stackoverflow.com/questions/62178354/… ... - berto99
Parece que ahora tenemos dos respuestas sobre esto. Personalmente, simplemente habría votado para cerrar la otra pregunta en lugar de intentar responder, porque en este momento no existe tal operador. - IMSoP
@IMSoP hay muchas preguntas aquí en StackOverflow sobre la propuesta de C ++, y no se han cerrado: a pesar de eso, estoy con usted sobre no publicar aquí este operador por el momento - berto99
No sé mucho sobre el proceso de C ++ y cuándo es razonable discutir propuestas, y para ser justos, parece bastante probable que esta tenga éxito en la modificación del entrenamiento, pero en general hay una montón de características propuestas para PHP que nunca llegan al lenguaje, y sería bastante confuso para los usuarios encontrarlas todas en listas de referencia. Dicho esto, en parte solo estoy siendo un viejo gruñón aquí: P - IMSoP
8
? -> Operador NullSafe
Agregado en PHP 8.0
Es el NullSafe Operator
, vuelve null
en caso de que intente invocar funciones u obtener valores de null
. El operador Nullsafe se puede encadenar y se puede utilizar tanto en los métodos como en las propiedades.
$objDrive = null;
$drive = $objDrive?->func?->getDriver()?->value; //return null
$drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object
El operador Nullsafe no funciona con claves de matriz:
$drive['admin']?->getDriver()?->value //Warning: Trying to access array offset on value of type null
$drive = [];
$drive['admin']?->getAddress()?->value //Warning: Undefined array key "admin"
respondido 27 nov., 20:22
Agregar esto se siente bastante prematuro, nadie verá este operador en ningún código en vivo, y es posible que ni siquiera se agregue. Sería mejor esperar hasta que los detalles estén finalizados y documentarlos adecuadamente. - IMSoP
Ya estamos recibiendo preguntas al respecto. : / Si la propuesta falla, podemos decidir si vale la pena mantenerla. - John Conde
@JohnConde Me sentiría tentado a cerrarlos como fuera de tema, porque están preguntando sobre un lenguaje de programación imaginario; o tal vez "esta pregunta pertenece a una parte diferente de la línea de tiempo, verifique la configuración en su máquina del tiempo";) - IMSoP
lol El pensamiento cruzó por mi mente. Me pregunté si esto ofrecería valor a los futuros visitantes y, por ahora, la respuesta es "sí". Pero eso puede cambiar ... - John Conde
@JohnConde El problema es que todavía no podemos dar una respuesta correcta: el comportamiento real del operador puede cambiar por completo, o es posible que nunca se agregue, por lo que cualquier cosa que escribamos ahora es tan probable que induzca a error como información. La única respuesta honesta es "un error de sintaxis, pero existe la posibilidad de que signifique algo en el futuro". - IMSoP
Sé que esto no es estrictamente PHP, pero ¿qué tal si incluyes un enlace a phpdoc.org para la sintaxis de comentarios de phpDocumentor, que se usa comúnmente y también es imposible buscar
/**
? - Mike¿Puedo sugerir corchetes y corchetes? - ajreal
También encontré mucho este problema (no poder buscar caracteres especiales), por eso hice SímboloHound, un motor de búsqueda que no ignora los caracteres especiales. También lo publiqué en Pila de aplicaciones. - dncrane
Bueno, desde el encabezado ¿Por qué es esto?, Supongo que es porque "La idea principal es tener enlaces a preguntas existentes en Stack Overflow, por lo que es más fácil para nosotros hacer referencia a ellas". - Herbert
Hoy se hizo una pregunta (20/15 de noviembre) stackoverflow.com/questions/33833259/qué-es-rscat-en-php pidiendo "¿Qué es $ rsCat en php?" (si esa pregunta aún se hace visible y no se elimina). Por extraño que parezca, no hay una referencia sobre
$
variable, pero sobre$$
Variables variables solamente. Creo que debería modificarse en alguna parte. - Funk Forty Niner