为什么字符串的行为类似于 PHP 5.3 中的数组?
我有这个代码:
$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
它在 PHP 5.5 中工作正常,但在 PHP 5.3 中,条件返回 true,同时包含类似 .它返回 的第一个字母,即 。$host
pjba01
$tierHosts['host']
p
我的代码有什么问题?
我有这个代码:
$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
它在 PHP 5.5 中工作正常,但在 PHP 5.3 中,条件返回 true,同时包含类似 .它返回 的第一个字母,即 。$host
pjba01
$tierHosts['host']
p
我的代码有什么问题?
您可以像数组一样访问字符串,而之前的 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。