Vraag Referentie - Wat betekent dit symbool in PHP?


Wat is dit?

Dit is een verzameling vragen die zo nu en dan naar voren komen over syntaxis in PHP. Dit is ook een Community Wiki, dus iedereen is uitgenodigd om deel te nemen aan het onderhoud van deze lijst.

Waarom is dit?

Vroeger was het moeilijk om vragen te stellen over operators en andere syntax-tokens.¹
Het belangrijkste idee is om links naar bestaande vragen over Stack Overflow te hebben, dus het is gemakkelijker voor ons om ernaar te verwijzen, niet om inhoud vanuit de PHP-handleiding te kopiëren.

¹ Opmerking: sinds januari 2013 Stack Overflow ondersteunt speciale tekens. Omzeil de zoektermen gewoon door aanhalingstekens, bijv. [php] "==" vs "==="

Wat moet ik hier doen?

Als u hier door iemand bent gewezen omdat u een dergelijke vraag hebt gesteld, vindt u hieronder de specifieke syntaxis. De gelinkte pagina's naar de PHP-handleiding samen met de gekoppelde vragen zal je vraag dan waarschijnlijk beantwoorden. Als dat het geval is, wordt u aangemoedigd om het antwoord te overtreffen. Deze lijst is niet bedoeld als vervanging voor de hulp die anderen bieden.

De lijst

Als uw specifieke token hieronder niet wordt vermeld, vindt u dit mogelijk in de Lijst met Parser-tokens.


&  Bitwise Operators of Referenties


=&  Referenties


&=  Bitwise Operators


&&  Logische operators


%  Rekenkundige operatoren


!!  Logische operators


@  Foutbeheersing Operators


?:  Ternary-operator


??  Null Coalesce-operator (sinds PHP 7)


:  Alternatieve syntaxis voor besturingsstructuren, Ternary-operator


::  Scope Resolution Operator


\  namespaces


->  Klassen en objecten


=>  arrays


^  Bitwise Operators


>>  Bitwise Operators


<<  Bitwise Operators


<<<  Heredoc of Nowdoc


=  Toewijdingsexploitanten


==  Vergelijkingsoperatoren


===  Vergelijkingsoperatoren


!==  Vergelijkingsoperatoren


!=  Vergelijkingsoperatoren


<>  Vergelijkingsoperatoren


<=>  Vergelijkingsoperatoren (sinds PHP 7.0)


|  Bitwise Operators


||  Logische operators


~  Bitwise Operators


+  Rekenkundige operatoren, Array-operators


+= en -=  Toewijdingsexploitanten


++ en --  Uitbreiding / afbouw van operators


.=  Toewijdingsexploitanten


.  String-operators


,  Functieargumenten

,  Variabele verklaringen


$$  Variabele variabelen


`  Execution Operator


<?=  Korte open tags


[]  arrays (korte syntaxis sinds PHP 5.4)


<?  Tags openen en sluiten


...  Argument uitpakken (sinds PHP 5.6)


**  machtsverheffen (sinds PHP 5.6)


#  Een commentaar in de vorm van een regel in de vorm van een regel



3785


oorsprong


antwoorden:


Uitbreiding / afbouw van operators

++ opstartoperator

-- operator verlagen

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.

Deze kunnen vóór of na de variabele gaan.

Als de variabele voor de variabele wordt geplaatst, wordt de increment / decrementbewerking uitgevoerd naar de variabele eerste dan wordt het resultaat geretourneerd. Als de variabele na de variabele wordt geplaatst, is dat de variabele eerste geretourneerd, dan is de increment / decrement-bewerking voltooid.

Bijvoorbeeld:

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

Live voorbeeld

In het bovenstaande geval ++$i wordt gebruikt, omdat het sneller is. $i++ zou dezelfde resultaten hebben.

Pre-increment is een beetje sneller, omdat het de variabele werkelijk verhoogt en daarna het resultaat 'retourneert'. Na het increment wordt een speciale variabele gemaakt, daar wordt de waarde van de eerste variabele gekopieerd en pas nadat de eerste variabele is gebruikt, wordt de waarde vervangen door de tweede.

U moet echter gebruiken $apples--, omdat u eerst het huidige aantal appels wilt weergeven, en dan je wilt er een ervan aftrekken.

Je kunt ook letters verhogen in PHP:

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

Een keer z is bereikt aa is de volgende, enzovoort.

Merk op dat karaktervariabelen kunnen worden opgehoogd maar niet worden verlaagd en dat geldt ook voor alleen ASCII-tekens (a-z en A-Z).


Stack Overflow-berichten:


947



Bitwise Operator

Wat is een beetje? Een bit is een weergave van 1 of 0. In principe UIT (0) en AAN (1)

Wat is een byte? Een byte bestaat uit 8 bits en de hoogste waarde van een byte is 255, wat betekent dat elk bit is ingesteld. We zullen bekijken waarom de maximale waarde van een byte 255 is.

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

Deze weergave van 1 byte

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

Een paar voorbeelden voor een beter begrip

De operator "AND": &

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

Dit zou het nummer 8 uitvoeren. Waarom? Laten we eens kijken naar ons tabelvoorbeeld.

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

Dus je kunt aan de tafel zien dat het enige bit dat ze samen delen de 8 bit is.

Tweede voorbeeld

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

De twee gedeelde bits zijn 32 en 4, die bij elkaar opgeteld 36 zijn.

De "Of" -operator: |

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

Dit zou het nummer 11 uitvoeren. Waarom?

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

U zult merken dat we 3 bits hebben ingesteld, in de 8, 2 en 1 kolommen. Tel ze op: 8 + 2 + 1 = 11.


359



_  Alias ​​voor gettext () 

Het onderstrepingsteken '_' zoals in _() is een alias van de gettext() functie.


224



Syntax    Name             Description

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

209



Magische constanten: Hoewel dit niet alleen symbolen zijn, maar een belangrijk onderdeel van deze symbolische familie. Er zijn acht magische constanten die veranderen afhankelijk van waar ze worden gebruikt.

__LINE__: Het huidige regelnummer van het bestand.

__FILE__: Het volledige pad en de bestandsnaam van het bestand. Indien gebruikt binnen een include, wordt de naam van het inbegrepen bestand geretourneerd. Sinds PHP 4.0.2, __FILE__ bevat altijd een absoluut pad met opgeloste symlinks, terwijl het in oudere versies relatief pad bevatte onder sommige omstandigheden.

__DIR__: De map met het bestand. Als het in een include wordt gebruikt, wordt de directory van het inbegrepen bestand geretourneerd. Dit komt overeen met dirname(__FILE__). Deze mapnaam heeft geen nasleep, tenzij het de hoofdmap is. (Toegevoegd in PHP 5.3.0.)

__FUNCTION__: De functienaam. (Toegevoegd in PHP 4.3.0) Vanaf PHP 5 geeft deze constante als resultaat de functienaam (hoofdlettergevoelig). In PHP 4 is de waarde altijd lager.

__CLASS__: De klassenaam. (Toegevoegd in PHP 4.3.0) Vanaf PHP 5 retourneert deze constante de klassenaam zoals deze werd gedeclareerd (hoofdlettergevoelig). In PHP 4 is de waarde altijd lager. De klassenaam bevat de naamruimte waarin deze is gedeclareerd (bijv. Foo\Bar). Merk op dat vanaf PHP 5.4 __CLASS__ werkt ook in eigenschappen. Bij gebruik in een eigenschapmethode, __CLASS__ is de naam van de klasse waarin de eigenschap wordt gebruikt.

__TRAIT__: De eigenschapnaam. (Toegevoegd in PHP 5.4.0) Vanaf PHP 5.4 geeft deze constante het kenmerk terug zoals het werd gedeclareerd (hoofdlettergevoelig). De kenmerknaam omvat de naamruimte waarin deze is aangegeven (bijv. Foo\Bar).

__METHOD__: De naam van de klassenmethode. (Toegevoegd in PHP 5.0.0) De methode naam wordt geretourneerd zoals het werd gedeclareerd (hoofdlettergevoelig).

__NAMESPACE__: De naam van de huidige naamruimte (hoofdlettergevoelig). Deze constante wordt gedefinieerd in compileertijd (toegevoegd in PHP 5.3.0).

Bron


194



<=> Ruimteschip Operator

Toegevoegd in PHP 7

De ruimteschip operator  <=> is de nieuwste vergelijkingsexploitant toegevoegd in PHP 7. Het is een non-associatief binaire operator met dezelfde prioriteit als operatoren voor gelijkheid (==, !=, ===, !==). Deze operator maakt een eenvoudigere driewegvergelijking tussen linkerhand en rechterhandopdrachten mogelijk.

De operator resulteert in een integer uitdrukking van:

  • 0 wanneer beide operands gelijk zijn
  • Minder dan 0 wanneer de linker operand minder is dan de rechter operand
  • Groter dan 0 wanneer de linker operand groter is dan de rechter operand

bijv.

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

Een goede praktische toepassing van het gebruik van deze operator is in callbacks van het vergelijkingstype waarvan wordt verwacht dat ze een nul, negatief of positief geheel getal retourneren op basis van een driewegvergelijking tussen twee waarden. De vergelijkingsfunctie die is doorgegeven aan usort is zo'n voorbeeld.

Vóór PHP 7 zou je schrijven ...

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

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

Sinds PHP 7 kun je schrijven ...

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

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

188



Typ Operators

instanceof wordt gebruikt om te bepalen of een PHP-variabele een geïnstantieerd object van een bepaalde klasse is.

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

Het bovenstaande voorbeeld zal uitvoeren:

bool(true)
bool(false)

Reden: Bovenstaand voorbeeld $a is een object van de mclass gebruik dus alleen a mclass gegevens niet voorbeeld van met de sclass

Voorbeeld met overerving

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

Het bovenstaande voorbeeld zal uitvoeren:

bool(true)
bool(true)

Voorbeeld met kloon

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

Het bovenstaande voorbeeld zal uitvoeren:

bool(true)
bool(true)

120