某天,某新服务器,某开发的新站,在某些情况下出现了
Warning(E_WARNING): Illegal string offset
警告信息,程序运行正常。
经过排查,原来是php版本变化引起的:
自 PHP 5.4 起字符串下标必须为整数或可转换为整数的字符串,否则会发出警告。
<?php $str = 'abc'; var_dump($str['1']); var_dump(isset($str['1'])); var_dump($str['1.0']); var_dump(isset($str['1.0'])); var_dump($str['x']); var_dump(isset($str['x'])); var_dump($str['1x']); var_dump(isset($str['1x'])); ?>
以上代码在PHP 5.3中的输出:
string(1) "b" bool(true) string(1) "b" bool(true) string(1) "a" bool(true) string(1) "b" bool(true)
以上代码在PHP 5.4中的输出:
string(1) "b" bool(true) Warning: Illegal string offset '1.0' in /tmp/t.php on line 7 string(1) "b" bool(false) Warning: Illegal string offset 'x' in /tmp/t.php on line 9 string(1) "a" bool(false) string(1) "b" bool(false)
原文章在这里:http://cn2.php.net/manual/zh/language.types.string.php
请使用Ctrl+F查询