Il motivo è PHP trattare variabili in modo specifico contesto. È un po 'simile a Visual Basic.
L'espressione 'a' + 1
utilizza l'aggiunta matematica. In questo contesto, a
viene interpretato come un numero, quindi verrà considerato 0 (se hai familiarità con C, è come inserire la stringa "a" in atoi()
).
Se si utilizza l'espressione 'a' . 1
il risultato sarebbe a1
a causa di esso mediante concatenazione di stringhe.
Per ottenere il risultato previsto (b
), è necessario utilizzare chr(ord('a') + 1)
, dove ord()
restituisce esplicitamente il valore ASCII del (primo) carattere.
$a++
è un caso speciale, essenzialmente un sovraccarico che considera il valore ASCII invece del valore stesso come variabile.
Cosa intendi con? : "Specialmente dal momento che gli operatori decrementano in questo caso i no-op". – Shubham
In realtà, non lo chiamerei necessariamente strano. Sta essenzialmente seguendo le regole matematiche standard usando una base di 25 (con lettere anziché numeri). – Mario
@Shubham "No-op" significa "nessuna operazione", cioè non accade nulla. È spiegato qui poco prima del primo esempio: http://php.net/manual/en/language.operators.increment.php – Mario