matigro, ne este caso, PHP no entiende que estés redefiniendo la cadena por un array.
Lo que ocurre es lo que menciona okram.
En el manual está bastante bien explicado. Esto debería hacerse únicamente con llaves "{ }"
Código PHP:
$a = "hola";
$a{2} = "m";
echo $a;
Sinembargo, PHP también permite el uso de corchetes por temas de compatibilidad con versiones anteriores. Pero deja claro que el uso de corchetes para este propósito es
obsoleto.
Pueden leerlo en el manual:
http://www.php.net/types.string#lang....string.substr
Saludos