string - PHP中的数组歧义

leo*_*loy 4 php arrays string

我朦胧地回忆起,从我对PHP文档(超过10年前)的第一次阅读中,访问数组($string[0])中的字符的类似数组的语法带来了一些含糊不清或未定义的行为.

O'Reilly PHP Pocket Reference(第2版)指出:

为了解决字符串和数组之间的歧义问题,引入了一种新的语法来从字符串中取消引用单个字符:

$string{2}

此语法等同于$string[2],并且是优选的.

我明白这$string[2]可能会令人困惑,但我不确定它是如何模棱两可的?

此外:我想知道新语法 如何$string{2}消除模糊/混淆,考虑到花括号(显然)也适用于"真实"数组.

dec*_*eze 6

唯一不明确的是,如果你期望一个数组,但实际上有一个字符串,$var[0]将给你字符串的第一个字节而不是第一个数组元素.这可能导致很多人头疼,并想知道为什么PHP只给你第一个字符而不是整个数组元素.对于非数字索引来说更是如此$var['foo'],如果$var是字符串则实际有效(是的,请不要问).即如果您的程序首先出错,可能会使调试稍微困难一些.

正确的程序没有歧义,因为变量不能同时是字符串和数组.