Il sort de la valeur de $a. Si $a = 'b', alors $$a = $b
Sans se soucier que la variable $b ait été définie ou non, PHP va considérer que $$a = $b. Ensuite, il évalue $b (qui existe ou non).
Ca revient vraiment à remplacer $a par son contenu.
$ indique qu'il s'agit d'une variable et est suivi directement du nom de la variable qui est une chaine de caractères. Si derrière ce premier $ il y en a un autre, alors celui-ci, suivi d'une chaine de caractères indique la variable à évaluer.
Dans $$a, PHP commence par évaluer $a. S'il s'agit d'une chaine de caractères, il la place derrière le premier $ pour en faire une nouvelle variable.
Ce n'est qu'alors qu'il va s'intéresser au fait que cette variable, dont le nom est lui-même variable, soit définie ou non, accessible ou non, etc.
--
Neige
N'hésitez pas à lire la
doc