Roman Neuhauser wrote:
# turnermm02@xxxxxxx / 2007-01-29 10:12:25 -0600:
Roman Neuhauser wrote:
# neuhauser@xxxxxxxxxx / 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/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php