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

2022-08-30 23:26:07

我有这个代码:

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

它在 PHP 5.5 中工作正常,但在 PHP 5.3 中,条件返回 true,同时包含类似 .它返回 的第一个字母,即 。$hostpjba01$tierHosts['host']p

我的代码有什么问题?


答案 1

您可以像数组一样访问字符串,而之前的 PHP 5.4 偏移量(如您的偏移量被静默地转换为 0),这意味着您访问了该字符串的第一个字符:name

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

在5.3之后,这样的偏移量将抛出一个通知,您也可以在手册中阅读:

从 PHP 5.4 开始,字符串偏移量必须是整数或类似整数的字符串,否则将引发警告。以前,像“foo”这样的偏移量被默默地投射到0。


答案 2