Référence - Que signifie ce symbole en PHP?

Sep 18 2010

Qu'est-ce que c'est?

Ceci est une collection de questions qui reviennent de temps en temps sur la syntaxe en PHP. C'est aussi un wiki communautaire, donc tout le monde est invité à participer à la maintenance de cette liste.

Pourquoi est-ce?

Auparavant, il était difficile de trouver des questions sur les opérateurs et autres jetons de syntaxe.
L'idée principale est d'avoir des liens vers des questions existantes sur Stack Overflow, il est donc plus facile pour nous de les référencer, de ne pas copier le contenu du manuel PHP.

Remarque: depuis janvier 2013, Stack Overflow prend en charge les caractères spéciaux . Entourez simplement les termes de recherche de guillemets, par exemple[php] "==" vs "==="

Que dois-je faire ici?

Si quelqu'un vous a signalé ici parce que vous avez posé une telle question, veuillez trouver la syntaxe particulière ci-dessous. Les pages liées au manuel PHP ainsi que les questions liées répondront probablement à votre question. Si tel est le cas, vous êtes encouragé à voter pour la réponse. Cette liste ne se veut pas un substitut à l'aide fournie par d'autres.

La liste

Si votre jeton particulier n'est pas répertorié ci-dessous, vous le trouverez peut-être dans la liste des jetons d'analyseur .


& Opérateurs ou références au niveau du bit

  • Que signifie démarrer une fonction PHP avec une esperluette?
  • Comprendre l'opérateur PHP & (esperluette, bit à bit et)
  • Opérateur PHP "&"
  • Différence entre & et && en PHP
  • Que signifie "&" ici en PHP?
  • Que signifie "&" dans ce cas?
  • Que signifie le signe "&" en PHP?
  • Que signifie cette signature (&) en PHP?
  • Comment fonctionne l'opérateur "&" dans une fonction PHP?
  • Que signifie & in & 2 en PHP?
  • Quand dois-je utiliser un opérateur au niveau du bit?
  • Est-il nécessaire d'utiliser une esperluette devant un objet? (& $)

=& Les références

  • Opérateur d'affectation de référence en PHP, = &
  • Que signifient les opérateurs "= &" et "& =" en PHP?
  • Que font les opérateurs '& =' et '= &'?
  • Que signifie = & en PHP?

&= Opérateurs au niveau du bit

  • Que signifient les opérateurs "= &" et "& =" en PHP?
  • Que font les opérateurs '& =' et '= &'?

&& Opérateurs logiques

  • 'AND' vs '&&' comme opérateur
  • Différence entre & et && en PHP
  • Y a-t-il une différence entre les opérateurs "et" et "&&" en PHP?
  • PHP - et / ou mots-clés

% Opérateurs arithmétiques

  • Que signifie le signe pourcentage en PHP?
  • Qu'est-ce que l'opérateur PHP% et comment l'utiliser dans des exemples réels?

!! Opérateurs logiques

  • Opérateur Double not (!!) en PHP

@ Opérateurs de contrôle d'erreur

  • À quoi sert le symbole @ en PHP?
  • Symbole 'At' avant le nom de la variable en PHP: @ $ _ POST
  • Fonctions PHP et @functions
  • Dois-je utiliser @ dans mon code PHP?
  • Que signifie @ en PHP?

?: Opérateur ternaire

  • Quels sont les opérateurs PHP "?" et ":" appelé et que font-ils?
  • ?: opérateur (l '' opérateur Elvis ') en PHP
  • Où puis-je lire sur les conditions effectuées avec "?" et ":" (deux-points)?
  • Utilisation de PHP 5.3?: Opérateur

?? Opérateur Null Coalesce (depuis PHP 7)

  • Opérateur de fusion nul de C # (??) en PHP

?string ?int ?array ?bool ?float Déclaration de type de retour Nullable (depuis PHP 7.1)

  • Déclaration de type de retour Nullable

: Syntaxe alternative pour les structures de contrôle , opérateur ternaire

  • Qu'est-ce que ":" en PHP?
  • Que signifie ":" en PHP?

:: Opérateur de résolution de portée

  • Que signifient deux deux points en PHP?
  • Quelle est la signification du nom du jeton PHP T_PAAMAYIM_NEKUDOTAYIM?
  • Quelle est la différence entre :: (double deux-points) et -> (flèche) en PHP?
  • Que sont exactement les liaisons statiques tardives en PHP?
  • static :: staticFunctionName ()
  • T_PAAMAYIM_NEKUDOTAYIM inattendu, attend T_NS_Separator

\ Espaces de noms

  • Backslash en PHP - qu'est-ce que cela signifie?
  • Que fait un \ (barre oblique inverse) en PHP (5.3+)?

-> Classes et objets

  • Comment s'appelle l'opérateur PHP "->" et comment le dire lorsque vous lisez du code à haute voix?
  • Où utilisons-nous l'opérateur objet "->" en PHP?
  • Quelle est la différence entre :: (double deux-points) et -> (flèche) en PHP?
  • Qu'est-ce que la syntaxe PHP $var1->$var2 signifie?
  • Qu'est-ce que "->" signifie / fait référence en PHP?

=> Tableaux

  • Que signifie "=>" en PHP?
  • Utilisation de => en PHP
  • Que fait $k => $v dans foreach ($ex as $k => $ v) signifie?

^ Opérateurs au niveau du bit

  • Comment fonctionne l'opérateur bit à bit XOR ('^')?
  • Que signifie ^ en PHP?

>> Opérateurs au niveau du bit

  • Que signifie >> en PHP?

<< Opérateurs au niveau du bit

  • Comportement d'impression étrange en PHP?

<<< Heredoc ou Nowdoc

  • Que signifie <<< END en PHP?
  • Expression PHP <<< EOB
  • En PHP, que représente "<<<"?
  • Utilisation de <<< CON en PHP
  • Quel est ce genre de syntaxe en PHP?

= Opérateurs d'affectation

  • Les 3 différents égaux

== Opérateurs de comparaison

  • En quoi les opérateurs de comparaison PHP d'égalité (== double égal) et d'identité (=== triple égal) diffèrent?
  • Opérateurs PHP! = Et ==
  • Les 3 différents égaux
  • Jonglerie de type et comparaisons (strictes) supérieures / inférieures à PHP

=== Opérateurs de comparaison

  • Que signifie "==="?
  • En quoi les opérateurs de comparaison PHP d'égalité (== double égal) et d'identité (=== triple égal) diffèrent?
  • Les 3 différents égaux
  • Jonglerie de type et comparaisons (strictes) supérieures / inférieures à PHP

!== Opérateurs de comparaison

  • Que signifie l'opérateur de comparaison! == en PHP?
  • Y a-t-il une différence entre! == et! = En PHP?

!= Opérateurs de comparaison

  • Opérateurs PHP! = Et ==
  • Y a-t-il une différence entre! == et! = En PHP?
  • comparer,! == versus! =
  • Quelle est la différence entre <> et! =

<> Opérateurs de comparaison

  • Opérateur PHP <>
  • Opérateur <> de PHP
  • Quelle est la différence entre <> et! =
  • Jonglerie de type et comparaisons (strictes) supérieures / inférieures à PHP

<=> Opérateurs de comparaison (depuis PHP 7.0)

  • Opérateur de vaisseau spatial (comparaison à trois voies)

| Opérateurs au niveau du bit

  • Quelle est la différence entre le | et || les opérateurs?
  • Qu'est-ce que l'utilisation d'un seul tuyau '|' Dans un argument de fonction Do?

|| Opérateurs logiques

  • Quelle est la différence entre le | et || les opérateurs?
  • PHP - et / ou mots-clés
  • Que fait exactement || moyenne?
  • Le comportement de l'opérateur or en PHP

~ Opérateurs au niveau du bit

  • Que signifie cet opérateur ~ ici?

+ Opérateurs arithmétiques , opérateurs de tableaux

  • + opérateur pour tableau en PHP?

+=et -= opérateurs d'affectation

  • À quoi sert + =?
  • Que signifie «$ page - = 1» dans mon document PHP?

++et les -- opérateurs d'incrémentation / décrémentation

  • Comprendre l'incrémentation
  • Réponse ci-dessous

.= Opérateurs d'affectation

  • Quelle est la différence entre. = Et + = en PHP?
  • Pour comprendre une ligne de PHP

. Opérateurs de chaîne

  • Différence entre point et virgule lors de la concaténation avec écho et retour?
  • Qu'est-ce qu'un . (point) faire en PHP?

, Arguments de fonction

  • Différence entre point et virgule lors de la concaténation avec écho et retour?

, Déclarations de variables

  • Que signifient les virgules dans une déclaration de variable?

$$ Variables variables

  • Que signifie $$ (dollar dollar ou double dollar) en PHP?
  • qu'est-ce que "$$" en PHP
  • $ function () et $$ variable

` Opérateur d'exécution

  • Comment s'appellent les backticks?

<?= Balises ouvertes courtes

  • Que signifie ce symbole en PHP
  • Que signifie «
  • Que signifie

[] Tableaux (syntaxe courte depuis PHP 5.4)

  • Tableaux PHP ... Quelle est / sont la (les) signification (s) d'une parenthèse vide?
  • Quel est le sens de []
  • Php array_push () vs myArray []
  • Que signifie [] lors de la lecture à partir d'un tableau PHP?
  • Raccourci pour les tableaux: $var = []tableau vide littéral

<? Balises d'ouverture et de fermeture

  • Les balises PHP courtes sont-elles acceptables à utiliser?

... Déballage d'arguments (depuis PHP 5.6)


** Exponentiation (depuis PHP 5.6)


# Commentaire de style shell sur une ligne

  • Puis-je utiliser des hachages pour les commentaires en PHP?

:? Types de retour Nullable

  • indice de type d'argument de méthode php avec point d'interrogation (? type)

?-> Appels d'opérateurs NullSafe (depuis PHP 8.0)

  • Que signifie ce symbole "? ->" en php, dans un objet ou une valeur nulle

Réponses

1206 PeterAjtai Sep 17 2010 at 23:30

Opérateurs d'incrémentation / décrémentation

++ opérateur d'incrément

-- opérateur de décrémentation

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.

Ceux-ci peuvent aller avant ou après la variable.

Si mis avant la variable, l'opération d' incrément / décrément est fait à la variable première alors le résultat est retourné. Si elle est placée après la variable, la variable est d' abord renvoyée, puis l'opération d'incrémentation / décrémentation est effectuée.

Par exemple:

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

Exemple en direct

Dans le cas ci ++$i- dessus est utilisé, car il est plus rapide. $i++aurait les mêmes résultats.

Le pré-incrémentation est un peu plus rapide car il incrémente vraiment la variable et après cela «retourne» le résultat. La post-incrémentation crée une variable spéciale, y copie la valeur de la première variable et seulement après que la première variable est utilisée, remplace sa valeur par la seconde.

Cependant, vous devez utiliser $apples--, car vous voulez d'abord afficher le nombre actuel de pommes, puis vous voulez en soustraire une.

Vous pouvez également incrémenter des lettres en PHP:

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

Une fois zatteint, aac'est le suivant, et ainsi de suite.

Notez que les variables de caractères peuvent être incrémentées mais pas décrémentées et même ainsi seuls les caractères ASCII simples (az et AZ) sont pris en charge.


Messages de débordement de pile:

  • Comprendre l'incrémentation
450 AnkurSaxena Oct 31 2012 at 20:28

Opérateur au niveau du bit

Qu'est-ce qu'un peu? Un bit est une représentation de 1 ou 0. Fondamentalement, OFF (0) et ON (1)

Qu'est-ce qu'un octet? Un octet est composé de 8 bits et la valeur la plus élevée d'un octet est 255, ce qui signifie que chaque bit est défini. Nous verrons pourquoi la valeur maximale d'un octet est de 255.

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

Cette représentation de 1 octet

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

Quelques exemples pour mieux comprendre

L'opérateur "ET": &

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

Cela donnerait le numéro 8. Pourquoi? Voyons voir en utilisant notre exemple de table.

-------------------------------------------
|      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|
------------------------------------------- 

Ainsi, vous pouvez voir dans le tableau que le seul bit qu'ils partagent ensemble est le 8 bits.

Deuxième exemple

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

Les deux bits partagés sont 32 et 4, qui, lorsqu'ils sont ajoutés ensemble, renvoient 36.

L'opérateur "Ou": |

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

Cela donnerait le numéro 11. Pourquoi?

-------------------------------------------
|      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|
-------------------------------------------

Vous remarquerez que nous avons 3 bits définis, dans les colonnes 8, 2 et 1. Additionnez-les: 8 + 2 + 1 = 11.

305 Sherif Jul 08 2015 at 23:44

<=> Spaceship Operator

Added in PHP 7

The spaceship operator <=> is the latest comparison operator added in PHP 7. It is a non-associative binary operator with the same precedence as equality operators (==, !=, ===, !==). This operator allows for simpler three-way comparison between left-hand and right-hand operands.

The operator results in an integer expression of:

  • 0 when both operands are equal
  • Less than 0 when the left-hand operand is less than the right-hand operand
  • Greater than 0 when the left-hand operand is greater than the right-hand operand

e.g.

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

A good practical application of using this operator would be in comparison type callbacks that are expected to return a zero, negative, or positive integer based on a three-way comparison between two values. The comparison function passed to usort is one such example.

Before PHP 7 you would write...

$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

Since PHP 7 you can write...

$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
    return $a <=> $b;
});
284 HabeebPerwad Nov 29 2012 at 16:07

_ Alias for gettext()

The underscore character '_' as in _() is an alias to the gettext() function.

277 AnkurSaxena Oct 31 2012 at 19:59
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
x or y     Or              True if any of x or y are true x=6 y=3
                           (x < 10 or y > 10) returns true 
x || y     Or              True if any of x or y are true x=6 y=3
                           (x < 3 || y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"
242 n.1 Apr 24 2013 at 11:43

Magic constants: Although these are not just symbols but important part of this token family. There are eight magical constants that change depending on where they are used.

__LINE__: The current line number of the file.

__FILE__: The full path and filename of the file. If used inside an include, the name of the included file is returned. Since PHP 4.0.2, __FILE__ always contains an absolute path with symlinks resolved whereas in older versions it contained relative path under some circumstances.

__DIR__: The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__). This directory name does not have a trailing slash unless it is the root directory. (Added in PHP 5.3.0.)

__FUNCTION__: The function name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the function name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.

__CLASS__: The class name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the class name as it was declared (case-sensitive). In PHP 4 its value is always lowercased. The class name includes the namespace it was declared in (e.g. Foo\Bar). Note that as of PHP 5.4 __CLASS__ works also in traits. When used in a trait method, __CLASS__ is the name of the class the trait is used in.

__TRAIT__: The trait name. (Added in PHP 5.4.0) As of PHP 5.4 this constant returns the trait as it was declared (case-sensitive). The trait name includes the namespace it was declared in (e.g. Foo\Bar).

__METHOD__: The class method name. (Added in PHP 5.0.0) The method name is returned as it was declared (case-sensitive).

__NAMESPACE__: The name of the current namespace (case-sensitive). This constant is defined in compile-time (Added in PHP 5.3.0).

Source

154 Maulikpatel Oct 31 2013 at 12:48

Type Operators

instanceof is used to determine whether a PHP variable is an instantiated object of a certain class.

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

The above example will output:

bool(true)
bool(false)

Reason: Above Example $a is a object of the mclass so use only a mclass data not instance of with the sclass

Example with inheritance

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

The above example will output:

bool(true)
bool(true)

Example with Clone

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

The above example will output:

bool(true)
bool(true)
139 JohnSlegers Jan 18 2016 at 13:13

An overview of operators in PHP:


Logical Operators:

  • $a && $b : TRUE if both $a and $b are TRUE.
  • $a || $b : TRUE if either $a or $b is TRUE.
  • $a xor $b : TRUE if either $a or $b is TRUE, but not both.
  • ! $a : TRUE if $a is not TRUE.
  • $a and $b : TRUE if both $a and $b are TRUE.
  • $a or $b : TRUE if either $a or $b is TRUE.

Comparison operators:

  • $a == $b : TRUE if $a is equal to $b after type juggling.
  • $a === $b : TRUE if $a is equal to $b, and they are of the same type.
  • $a != $b : TRUE if $a is not equal to $b after type juggling.
  • $a <> $b : TRUE if $a is not equal to $b after type juggling.
  • $a !== $b : TRUE if $a is not equal to $b, or they are not of the same type.
  • $a < $b : TRUE if $a is strictly less than $b.
  • $a > $b : TRUE if $a is strictly greater than $b.
  • $a <= $b : TRUE if $a is less than or equal to $b.
  • $a >= $b : TRUE if $a is greater than or equal to $b.
  • $a <=> $b : An integer less than, equal to, or greater than zero when $a is respectively less than, equal to, or greater than $b. Available as of PHP 7.
  • $a ? $b : $c : if $a return $b else return $c (ternary operator)
  • $a ?? $c : Same as $a ? $a : $c (null coalescing operator - requires PHP>=7)

Arithmetic Operators:

  • -$a : Opposite of $a.
  • $a + $b : Sum of $a and $b.
  • $a - $b : Difference of $a and $b.
  • $a * $b : Product of $a and $b.
  • $a / $b : Quotient of $a and $b.
  • $a % $b : Remainder of $a divided by $b.
  • $a ** $b : Result of raising $a to the $b'th power (introduced in PHP 5.6)

Incrementing/Decrementing Operators:

  • ++$a : Increments $a by one, then returns $a.
  • $a++ : Returns $a, then increments $a by one.
  • --$a : Decrements $a by one, then returns $a.
  • $a-- : Returns $a, then decrements $a by one.

Bitwise Operators:

  • $a & $b : Bits that are set in both $a and $b are set.
  • $a | $b : Bits that are set in either $a or $b are set.
  • $a ^ $b : Bits that are set in $a or $b but not both are set.
  • ~ $a : Bits that are set in $a are not set, and vice versa.
  • $a << $b : Shift the bits of $a $b steps to the left (each step means "multiply by two")
  • $a >> $b : Shift the bits of $a $b steps to the right (each step means "divide by two")

String Operators:

  • $a . $b : Concatenation of $a and $b.

Array Operators:

  • $a + $b : Union of $a and $b.
  • $a == $b : TRUE if $a and $b have the same key/value pairs.
  • $a === $b : TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
  • $a != $b : TRUE if $a is not equal to $b.
  • $a <> $b : TRUE if $a is not equal to $b.
  • $a !== $b : TRUE if $a is not identical to $b.

##Assignment Operators:

  • $a = $b : The value of $b is assigned to $a
  • $a += $b : Same as $a = $a + $b
  • $a -= $b : Same as $a = $a - $b
  • $a *= $b : Same as $a = $a * $b
  • $a /= $b : Same as $a = $a / $b
  • $a %= $b : Same as $a = $a % $b
  • $a **= $b : Same as $a = $a ** $b
  • $a .= $b : Same as $a = $a . $b
  • $a &= $b : Same as $a = $a & $b
  • $a |= $b : Same as $a = $a | $b
  • $a ^= $b : Same as $a = $a ^ $b
  • $a <<= $b : Same as $a = $a << $b
  • $a >>= $b : Same as $a = $a >> $b
  • $a ??= $b : The value of $b is assigned to $a if $a is null or not defined (null coalescing assignment operator - requires PHP>=7.4)

Note

and operator and or operator have lower precedence than assignment operator =.

This means that $a = true and false; is equivalent to ($a = true) and false.

In most cases you will probably want to use && and ||, which behave in a way known from languages like C, Java or JavaScript.

107 rajangupta Oct 11 2015 at 21:15

Spaceship Operator <=> (Added in PHP 7)

Examples for <=> Spaceship operator (PHP 7, Source: PHP Manual):

Integers, Floats, Strings, Arrays & objects for Three-way comparison of 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
// 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
76 mnv Nov 24 2015 at 03:27

{} Curly braces

  • Blocks - curly braces/no curly braces?
  • Curly braces in string in PHP
  • PHP curly braces in array notation

And some words about last post

$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
69 VIPINAROY Oct 31 2016 at 20:38

Null coalescing operator (??)

This operator has been added in PHP 7.0 for the common case of needing to use a ternary operator in conjunction with isset(). It returns its first operand if it exists and is not NULL; otherwise it returns its second operand.

<?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';
?>
65 devpro Dec 17 2015 at 14:41

PHP Strings: PHP Strings can be specified in four ways not just two ways:

1) Single Quote Strings:

$string = 'This is my string'; // print This is my string

2) Double Quote Strings:

$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 (since PHP 5.3.0):

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string
49 Webeng Jun 12 2016 at 18:07

QUESTION:

What does => mean?


ANSWER:

=> Is the symbol we humans decided to use to separate "Key" => "Value" pairs in Associative Arrays.

ELABORATING:

To understand this, we have to know what Associative Arrays are. The first thing that comes up when a conventional programmer thinks of an array (in PHP) would be something similar to:

$myArray1 = array(2016, "hello", 33);//option 1 $myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3 $myArray3[] = 2016; 
$myArray3[] = "hello"; $myArray3[] = 33;

Where as, if we wanted to call the array in some later part of the code, we could do:

echo $myArray1[1];// output: hello echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

So far so good. However, as humans, we might find it hard to remember that index [0] of the array is the value of the year 2016, index [1] of the array is a greetings, and index [2] of the array is a simple integer value. The alternative we would then have is to use what is called an Associative Array. An Associative array has a few differences from a Sequential Array (which is what the previous cases were since they increment the index used in a predetermined sequence, by incrementing by 1 for each following value).

Differences (between a sequential and associative array):

  • Durring the declaration of an Associative Array, you don't only include the value of what you want to put in the array, but you also put the index value (called the key) which you want to use when calling the array in later parts of the code. The following syntax is used during it's declaration: "key" => "value".

  • When using the Associative Array, the key value would then be placed inside the index of the array to retrieve the desired value.

For instance:

    $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;

And now, to receive the same output as before, the key value would be used in the arrays index:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello echo $myArray3["Greetings"];// output: hello

FINAL POINT:

So from the above example, it is pretty easy to see that the => symbol is used to express the relationship of an Associative Array between each of the key and value pairs in an array DURING the initiation of the values within the array.

37 dev.mraj Mar 18 2017 at 13:05

Question:

What does "&" mean here in PHP?

PHP "&" operator

Makes life more easier once we get used to it..(check example below carefully)

& usually checks bits that are set in both $a and $b are set.

have you even noticed how these calls works?

   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);

So behind all above is game of bitwise operator and bits.

One usefull case of these is easy configurations like give below, so a single integer field can store thousands of combos for you.

Most people have already read the docs but didn't reliase the real world use case of these bitwise operators.

Example That you 'll love

<?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
31 ParthNayak Oct 03 2017 at 20:28

== is used for check equality without considering variable data-type

=== is used for check equality for both the variable value and data-type

Example

$a = 5

  1. if ($a == 5) - will evaluate to true

  2. if ($a == '5') - will evaluate to true, because while comparing this both value PHP internally convert that string value into integer and then compare both values

  3. if ($a === 5) - will evaluate to true

  4. if ($a === '5') - will evaluate to false, because value is 5, but this value 5 is not an integer.

28 YogiGhorecha Dec 06 2017 at 23:05

Null Coalesce operator "??" (Added in PHP 7)

Not the catchiest name for an operator, but PHP 7 brings in the rather handy null coalesce so I thought I'd share an example.

In PHP 5, we already have a ternary operator, which tests a value, and then returns the second element if that returns true and the third if it doesn't:

echo $count ? $count : 10; // outputs 10

There is also a shorthand for that which allows you to skip the second element if it's the same as the first one: echo $count ?: 10; // also outputs 10

In PHP 7 we additionally get the ?? operator which rather than indicating extreme confusion which is how I would usually use two question marks together instead allows us to chain together a string of values. Reading from left to right, the first value which exists and is not null is the value that will be returned.

// $a is not set
$b = 16; echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

This construct is useful for giving priority to one or more values coming perhaps from user input or existing configuration, and safely falling back on a given default if that configuration is missing. It's kind of a small feature but it's one that I know I'll be using as soon as my applications upgrade to PHP 7.

13 JohnConde Jan 16 2019 at 19:42

Nullable return type declaration

PHP 7 adds support for return type declarations. Similarly to argument type declarations, return type declarations specify the type of value that will be returned from a function. The same types are available for return type declarations as are available for argument type declarations.

Strict typing also has an effect on return type declarations. In the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise, a TypeError will be thrown.

As of PHP 7.1.0, return values can be marked as nullable by prefixing the type name with a question mark (?). This signifies that the function returns either the specified type or NULL.

<?php
function get_item(): ?string {
    if (isset($_GET['item'])) { return $_GET['item'];
    } else {
        return null;
    }
}
?>

Source

8 YogiGhorecha Sep 30 2019 at 22:21

Three DOTS as Splat Operator (...) (since PHP 5.6)

PHP has an operator "..." (Three dots) which is referred as Splat Operator. It is used to pass arbitrary number of parameters in a function and this type of function is called Variadic Functions. Let’s take examples to use of "..." (Three dots).

Example 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
?>

Each arguments of calculateNumbers() function pass through $params as an array when use "… ".

There are many different ways to use "… " operator. Below some examples:

Example 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
?>

Example 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
?>

Example 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

?>
3 Berto99 Jun 04 2020 at 00:24

NullSafe Operator "?->" (possibly) since php8

In PHP8 it's been accepted this new operator, you can find the documentation here. ?-> it's the NullSafe Operator, it returns null in case you try to invoke functions or get values from null...

Examples:

<?php
$obj = null; $obj = $obj?->attr; //return null $obj = ?->funct(); // return null
$obj = $objDrive->attr; // Error: Trying to get property 'attr' of non-object
?>
3 JohnConde Jun 04 2020 at 00:20

?-> NullSafe Operator

Added in PHP 8.0

It's the NullSafe Operator, it returns null in case you try to invoke functions or get values from null. Nullsafe operator can be chained and can be used both on the methods and properties.

$objDrive = null; $drive = $objDrive?->func?->getDriver()?->value; //return null $drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object

Nullsafe operator doesn't work with array keys:

$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"