Domanda Riferimento - Cosa significa questo simbolo in PHP?


Cos'è questo?

Questa è una raccolta di domande che emergono di tanto in tanto sulla sintassi in PHP. Questo è anche un wiki della comunità, quindi tutti sono invitati a partecipare a questo elenco.

Perchè è questo?

Era difficile trovare domande sugli operatori e altri token di sintassi.¹
L'idea principale è di avere collegamenti a domande esistenti su Stack Overflow, quindi è più facile per noi fare riferimento a loro, non copiare il contenuto del manuale PHP.

¹ Nota: da gennaio 2013, Stack Overflow supporta caratteri speciali. Basta racchiudere i termini di ricerca tra virgolette, ad es. [php] "==" vs "==="

Cosa dovrei fare qui?

Se sei stato indicato qui da qualcuno perché hai fatto una domanda del genere, ti preghiamo di trovare la sintassi particolare di seguito. Le pagine collegate al Manuale PHP insieme alle domande collegate probabilmente risponderanno alla tua domanda. Se è così, sei incoraggiato a cambiare la risposta. Questo elenco non è inteso come sostituto dell'aiuto fornito dagli altri.

La lista

Se il tuo particolare token non è elencato di seguito, potresti trovarlo nel Elenco di token Parser.


&  Operatori bit a bit o Riferimenti


=&  Riferimenti


&=  Operatori bit a bit


&&  Operatori logici


%  Operatori aritmetici


!!  Operatori logici


@  Operatori di controllo degli errori


?:  Operatore ternario


??  Null Coalesce Operator (da PHP 7)


:  Sintassi alternativa per le strutture di controllo, Operatore ternario


::  Operatore di risoluzione dell'ambito


\  Namespace


->  Classi e oggetti


=>  Array


^  Operatori bit a bit


>>  Operatori bit a bit


<<  Operatori bit a bit


<<<  Heredoc o Nowdoc


=  Operatori di assegnazione


==  Operatori di confronto


===  Operatori di confronto


!==  Operatori di confronto


!=  Operatori di confronto


<>  Operatori di confronto


<=>  Operatori di confronto (da PHP 7.0)


|  Operatori bit a bit


||  Operatori logici


~  Operatori bit a bit


+  Operatori aritmetici, Operatori di array


+= e -=  Operatori di assegnazione


++ e --  Operatori incrementali / decrescenti


.=  Operatori di assegnazione


.  Operatori di stringhe


,  Argomenti della funzione

,  Dichiarazioni variabili


$$  Variabili variabili


`  Esecutore


<?=  Short Open Tags


[]  Array (sintassi breve da PHP 5.4)


<?  Tag di apertura e chiusura


...  Argomento di disfacimento (da PHP 5.6)


**  elevamento a potenza (da PHP 5.6)


#  Commento in stile shell a una riga



3785


origine


risposte:


Operatori incrementali / decrescenti

++ operatore di incremento

-- decremento dell'operatore

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.

Questi possono andare prima o dopo la variabile.

Se messo prima della variabile, l'operazione di incremento / decremento viene eseguita sulla variabile primo quindi il risultato viene restituito. Se messo dopo la variabile, la variabile è primo restituito, quindi l'operazione di incremento / decremento viene eseguita.

Per esempio:

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

Esempio dal vivo

Nel caso sopra ++$i è usato, dal momento che è più veloce. $i++ avrebbe gli stessi risultati

Il pre-incremento è un po 'più veloce, perché aumenta effettivamente la variabile e dopo di ciò' restituisce 'il risultato. Post-incremento crea una variabile speciale, copia lì il valore della prima variabile e solo dopo che la prima variabile è stata utilizzata, sostituisce il suo valore con la seconda.

Tuttavia, è necessario utilizzare $apples--, poiché per prima cosa si desidera visualizzare il numero corrente di mele e poi vuoi sottrarre uno da esso.

Puoi anche incrementare le lettere in PHP:

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

Una volta z è raggiunto aa è il prossimo, e così via.

Si noti che le variabili di carattere possono essere incrementate ma non decrementate e anche così sono supportati solo caratteri ASCII semplici (a-z e A-Z).


Stack Overflow Posts:


947



Operatore bit a bit

Che cosa è un po '? Un bit è una rappresentazione di 1 o 0. Fondamentalmente OFF (0) e ON (1)

Cos'è un byte? Un byte è composto da 8 bit e il valore più alto di un byte è 255, il che significa che ogni bit è impostato. Osserveremo il motivo per cui il valore massimo di un byte è 255.

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

Questa rappresentazione di 1 byte

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

Alcuni esempi per una migliore comprensione

L'operatore "AND": &

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

Questo produrrebbe il numero 8. Perché? Bene, vediamo usando il nostro esempio di tabella.

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

Quindi puoi vedere dal tavolo l'unico bit che condividono è l'8 bit.

Secondo esempio

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

I due bit condivisi sono 32 e 4, che quando aggiunti insieme restituiscono 36.

L'operatore "Or": |

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

Questo produrrebbe il numero 11. Perché?

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

Noterai che abbiamo 3 bit impostati, nelle colonne 8, 2 e 1. Aggiungili: 8 + 2 + 1 = 11.


359



_  Alias ​​per gettext () 

Il carattere di sottolineatura '_' come in _() è un alias per il gettext() funzione.


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



Costanti magiche: Sebbene questi non siano solo simboli ma parte importante di questa famiglia di token. Ci sono otto costanti magiche che cambiano a seconda di dove sono usate.

__LINE__: Il numero di riga corrente del file.

__FILE__: Il percorso completo e il nome file del file. Se utilizzato all'interno di un include, viene restituito il nome del file incluso. Dal momento che PHP 4.0.2, __FILE__ contiene sempre un percorso assoluto con i collegamenti simbolici risolti mentre nelle versioni precedenti conteneva il percorso relativo in alcune circostanze.

__DIR__: La directory del file. Se utilizzato all'interno di un include, viene restituita la directory del file incluso. Questo è equivalente a dirname(__FILE__). Questo nome di directory non ha una barra finale a meno che non sia la directory root. (Aggiunto in PHP 5.3.0.)

__FUNCTION__: Il nome della funzione. (Aggiunto in PHP 4.3.0) A partire da PHP 5 questa costante restituisce il nome della funzione così come è stato dichiarato (sensibile al maiuscolo / minuscolo). In PHP 4 il suo valore è sempre in minuscolo.

__CLASS__: Il nome della classe. (Aggiunto in PHP 4.3.0) A partire da PHP 5 questa costante restituisce il nome della classe così come è stato dichiarato (sensibile al maiuscolo / minuscolo). In PHP 4 il suo valore è sempre in minuscolo. Il nome della classe include lo spazio dei nomi in cui è stato dichiarato (ad es. Foo\Bar). Si noti che a partire da PHP 5.4 __CLASS__ Funziona anche in tratti. Se usato in un metodo tratto, __CLASS__ è il nome della classe in cui è usato il tratto.

__TRAIT__: Il nome del tratto. (Aggiunto in PHP 5.4.0) A partire da PHP 5.4 questa costante restituisce il tratto come è stato dichiarato (sensibile al maiuscolo / minuscolo). Il nome del tratto include lo spazio dei nomi in cui è stato dichiarato (ad es. Foo\Bar).

__METHOD__: Il nome del metodo di classe. (Aggiunto in PHP 5.0.0) Il nome del metodo viene restituito come è stato dichiarato (sensibile al maiuscolo / minuscolo).

__NAMESPACE__: Il nome dello spazio dei nomi corrente (sensibile al maiuscolo / minuscolo). Questa costante è definita in fase di compilazione (aggiunta in PHP 5.3.0).

fonte


194



<=> Operatore di astronave

Aggiunto in PHP 7

Il operatore di astronave  <=> è l'ultimo operatore di confronto aggiunto in PHP 7. È un non associativo operatore binario con la stessa precedenza degli operatori di uguaglianza (==, !=, ===, !==). Questo operatore consente un confronto a tre vie più semplice tra gli operandi di sinistra e di destra.

L'operatore produce un'espressione intera di:

  • 0 quando entrambi gli operandi sono uguali
  • Meno di 0 quando l'operando di sinistra è inferiore all'operando di destra
  • Più grande di 0 quando l'operando di sinistra è maggiore dell'operando di destra

per esempio.

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

Una buona applicazione pratica dell'utilizzo di questo operatore sarebbe in tipi di callback di confronto che dovrebbero restituire un numero intero zero, negativo o positivo basato su un confronto a tre vie tra due valori. La funzione di confronto è passata a usort è uno di questi esempi.

Prima di PHP 7 dovresti scrivere ...

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

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

Da PHP 7 puoi scrivere ...

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

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

188



Tipo Operatori

instanceof è usato per determinare se una variabile PHP è un oggetto istanziato di una determinata classe.

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

L'esempio sopra uscirà:

bool(true)
bool(false)

Ragionare: Sopra l'esempio $a è un oggetto di mclass quindi usa solo a mclass dati non istanza di con sclass

Esempio con ereditarietà

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

L'esempio sopra uscirà:

bool(true)
bool(true)

Esempio con Clone

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

L'esempio sopra uscirà:

bool(true)
bool(true)

120