Référence - Que signifie ce symbole en PHP?
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
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 z
atteint, aa
c'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
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.
<=>
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;
});
_
Alias for gettext()
The underscore character '_' as in _()
is an alias to the gettext() function.
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"
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
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)
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.
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
{}
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
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';
?>
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
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 thekey
) 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 desiredvalue
.
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.
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
==
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
if ($a == 5)
- will evaluate to trueif ($a == '5')
- will evaluate to true, because while comparing this both value PHP internally convert that string value into integer and then compare both valuesif ($a === 5)
- will evaluate to trueif ($a === '5')
- will evaluate to false, because value is 5, but this value 5 is not an integer.
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.
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
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
?>
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
?>
?-> 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"