我朦胧地回忆起,从我对PHP文档(超过10年前)的第一次阅读中,访问数组($string[0])中的字符的类似数组的语法带来了一些含糊不清或未定义的行为.
O'Reilly PHP Pocket Reference(第2版)指出:
为了解决字符串和数组之间的歧义问题,引入了一种新的语法来从字符串中取消引用单个字符:
$string{2}此语法等同于
$string[2],并且是优选的.
我明白这$string[2]可能会令人困惑,但我不确定它是如何模棱两可的?
唯一不明确的是,如果你期望一个数组,但实际上有一个字符串,$var[0]将给你字符串的第一个字节而不是第一个数组元素.这可能导致很多人头疼,并想知道为什么PHP只给你第一个字符而不是整个数组元素.对于非数字索引来说更是如此$var['foo'],如果$var是字符串则实际有效(是的,请不要问).即如果您的程序首先出错,可能会使调试稍微困难一些.
正确的程序没有歧义,因为变量不能同时是字符串和数组.