> > There are some people using this syntax to distinguish between array 
and
> > string access. It's a nice thought, but as the vast majority of code
> > doesn't make this distinction (I think the only time I saw this in 
recent
> > years was inside some old PEAR code), it's not really a useful 
indicator.

> I personally use it because I like to quickly tell if I am doing an
> operation on a string or array, it is eye candy and makes a lot of
> sense. I think if anything the two syntaxes should be decoupled
> instead.

I think that suitable naming is more useful for this purpose. 
As this syntax used both for arrays and strings then "$a{2}" 
says absolutely nothing to anybody instead author, maybe.

> The thing is, I just don't understand the rationale to remove this
> feature, what the full gain from doing so is?

I'm fully agree with Nikita Popov:

> > > The rarity of its use also makes it rather confusing. While $foo[$x] 
is well established as an 
> > > array or string offset (or for that matter, ArrayObject) access and 
will be 
> > > recognized by any programmer coming from any number of programming 
languages, 
> > > $foo{$x} certainly is not, and is a WTF moment for people who don't 
happen to personally 
> > > use this syntax.

Furthermore, curly braces is standard way to separate scope in almost 
all languages including PHP (except one very rare and special case).

@Michael Wallner
> Do I understand it right, that you're proposing deprecating accessing
> $string{$offset}? I think that's an important way of differentiation
> between string and array offset access.
>
> I'd vote "yes" for splitting syntax on array and string offset access,
> but as is: -1.

When we access char inside string, actually we access 
to element of indexed array of chars.

Splitting array and string access is complex change. 
For now it processed on AST-creation phase and it is possible 
to transfer to compiler via AST-attribute. For splitting 
it is needs to transfer this difference into runtime.

In addition, this separation can lead to much more ambiguity when 
migrating old code.

Reply via email to