php arrays string php-5.3 php-5.4

¿Por qué las cadenas se comportan como una matriz en PHP 5.3?



arrays string (1)

Tengo este codigo

$tierHosts[''host''] = isset($host[''name'']) ? $host[''name''] : $host;

Funciona bien en PHP 5.5, pero en PHP 5.3 la condición devuelve true mientras que $host contiene una cadena como pjba01 . Devuelve la primera letra de $tierHosts[''host''] , es decir, p .

¿Qué tiene de malo mi código?


Puede acceder a cadenas como una matriz y las compensaciones anteriores de PHP 5.4, como su name se convirtieron silenciosamente en 0, significa que accedió al primer carácter de esa cadena:

character | p | j | b | a | 0 | 1 | ----------------------------------- index | 0 | 1 | 2 | 3 | 4 | 5 |

Después de la 5.3, dichas compensaciones emitirán un aviso, como también puede leer en el manual:

A partir de PHP 5.4, las compensaciones de cadena deben ser enteros o cadenas de tipo entero, de lo contrario se emitirá una advertencia. Anteriormente, un desplazamiento como "foo" se convertía silenciosamente en 0.