tags:

views:

50

answers:

3

Why is it that this works:

        $cacheMatchesNotPlayed = $cache->load('externalData');
        $cacheMatchesNotPlayed = $cacheMatchesNotPlayed['matchesNotPlayed'];

But this doesn't work:

        $cacheMatchesNotPlayed = $cache->load('externalData')['matchesNotPlayed'];

Is there some reason for it? The second bit is easier to write.

+7  A: 

Because PHP does not support that syntax.

Chacha102
I know it sounds simple and dumb, but that is the answer...
Chacha102
one of the stupidest limitation of PHP
Andrey
@Andrey: I can think of *far* stupider limitations besides this. :-)
salathe
@salathe - i said *one of* :)
Andrey
@Andrey: haha, fair enough :)
salathe
+5  A: 

PHP just does not support array dereferencing in the way you have described. Also covered here:

http://stackoverflow.com/questions/742764/php-syntax-for-dereferencing-function-result

Adam Backstrom
+3  A: 

PHP does not support the function array dereferencing, which you want to do.

See an RFC on the subject http://wiki.php.net/rfc/functionarraydereferencing, and the associated mailing list conversations, which was declined roughly this time last year. While there was support for this, and it's still a common request (usually "why doesn't this work?"), there are no plans in motion to introduce this syntax.

As for why, quite simply the code implementing it has not been submitted for approval (if it has been written at all).

salathe
Is it difficult to implement this functionality or is there some other reason for this? Because it's a really annoying "feature" of PHP, I always use it that way and then wonder why my code is not working.
Richard Knop
I've never looked into what would be necessary to implement it, so I can't really say how difficult it would be. All I can say is that there have been voices raised on the subject for many years, but still no code. Though perhaps the complexity of the task and lack of patches submitted bear no real correlation.
salathe