La razón es PHP el tratamiento de las variables de una manera específica de contexto. Es un poco similar a Visual Basic.
La expresión 'a' + 1
utiliza la adición matemática. En este contexto, a
se interpreta como un número, por lo que se considerará 0 (si está familiarizado con C, es como alimentar la cadena "a" en atoi()
).
Si utiliza la expresión 'a' . 1
, el resultado sería a1
debido a que utiliza la concatenación de cadenas.
Para obtener el resultado que esperaba (b
), tendría que usar chr(ord('a') + 1)
, donde ord()
devuelve explícitamente el valor ASCII del (primer) carácter.
$a++
es un caso especial, esencialmente una sobrecarga que mira el valor de ascii en lugar del valor en sí mismo como la variable.
¿A qué te refieres con? : "Especialmente porque los operadores de decremento no funcionan en este caso". – Shubham
En realidad, yo no lo llamaría necesariamente necesariamente. Esencialmente sigue reglas matemáticas estándar usando una base de 25 (con letras en vez de números). – Mario
@Shubham "No-op" significa "sin operación", es decir, no sucede nada. Se explica aquí justo antes del primer ejemplo: http://php.net/manual/en/language.operators.increment.php – Mario