Re: Re: [BULK] [PHP] Use array returned by function directly?

From: Date: Mon, 29 Jan 2007 16:40:54 +0000
Subject: Re: Re: [BULK] [PHP] Use array returned by function directly?
References: 1 2 3 4 5 6  Groups: php.general 
Request: Send a blank email to php-general+get-247950@lists.php.net to get a copy of this message
Roman Neuhauser wrote:
# turnermm02@shaw.ca / 2007-01-29 10:12:25 -0600:
Roman Neuhauser wrote:
    
# neuhauser@sigpipe.cz / 2007-01-29 15:27:21 +0000:
# crash
#assert(2 == returns_array()['c']);
        # still crash
#assert(2 == returns_array()['c']);
        
s/crash/syntax error/
You can do this in Perl: my $c = (fn(@a))[2];
    
Not to mention C++, Python, or quite a few other languages.
But in PHP, this is a syntax error: $c = (fn($a))[2];
    
Well, DUH! THat's what the OP was curious about: why is it an error?
Also, it's not clear what the original syntax is meant to do:
       explode($needle, $array)[3]
explode() takes a string and converts it to an array based on the separator expression.  This might make sense:
explode($needle, $array[3]) where $array[3] is a string. But explode($needle, $array), it turns out, simply returns the string "Array".
    
Not at all! Watch this: <?php $array = 'O M F G'; $needle = ' '; assert(array('O', 'M', 'F', 'G') == explode($needle, $array)); ?> I thought the issue was this: $array = 'O M F G'; $needle = ' '; $array_2 = array('O', 'M', 'F', 'G'); assert($array == explode($needle, $array_2)); -- _____________________ Myron Turner http://www.room535.org http://www.bstatzero.org http://www.mturner.org/XML_PullParser/

« previous php.general (#247950) next »