为什么字符串在PHP 5.3中的行为类似于数组?

Rit*_*esh 17 php arrays string php-5.3 php-5.4

我有这个代码:

$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
Run Code Online (Sandbox Code Playgroud)

它在PHP 5.5中运行良好,但在PHP 5.3中,条件返回true,同时$host包含类似的字符串pjba01.它返回的第一个字母$tierHosts['host'],即p.

我的代码出了什么问题?

Riz*_*123 23

您可以访问类似于数组的字符串以及先前的PHP 5.4偏移,例如您name静默地将其转换为0,意味着您访问了该字符串的第一个字符:

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

5.3之后这样的偏移将发出通知,你也可以阅读手册:

从PHP 5.4开始,字符串偏移必须是整数或类似整数的字符串,否则将引发警告.以前像"foo"这样的偏移量会默默地转换为0.