ID: 50003
Updated by: [email protected]
Reported By: melfar at gmail dot com
-Status: Open
+Status: Feedback
Bug Type: Feature/Change Request
Operating System: agnostic
PHP Version: 5.3.0
New Comment:
The idea was often discussed, but nobody found a fully satisfying
solution, yet.
Yours is limited to one array dimension.
<?php
function foo() {
return array(array(42));
}
echo foo()[0][0];
?>
Will for instance not work but should be supported.
I also think it's likely to cause memory problems in edge cases while I
wasn't able to create one in my quick tests.
Anyidea aobut the above problem?
Previous Comments:
------------------------------------------------------------------------
[2009-10-26 18:47:23] melfar at gmail dot com
Not sure how to attach a file. The proposed patch is as follows.
--- a/Zend/zend_language_parser.y.orig 2009-10-26 18:13:56.000000000
+0300
+++ b/Zend/zend_language_parser.y 2009-10-26 21:20:19.000000000
+0300
@@ -47,7 +47,7 @@
%}
%pure_parser
-%expect 2
+%expect 6
%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
%left ','
@@ -874,6 +874,11 @@ variable_class_name:
;
base_variable_with_function_calls:
+ raw_base_variable_with_function_calls { $$ = $1; }
+ | raw_base_variable_with_function_calls '[' dim_offset ']'
{ fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
+;
+
+raw_base_variable_with_function_calls:
base_variable { $$ = $1; }
| function_call {
zend_do_begin_variable_parse(TSRMLS_C); $$ = $1; $$.u.EA.type =
ZEND_PARSED_FUNCTION_CALL; }
;
------------------------------------------------------------------------
[2009-10-26 18:45:24] melfar at gmail dot com
Description:
------------
PHP parser doesn't allow for array index operation to be used on a
result of a function call. I propose a patch to allow such a
construction.
Reproduce code:
---------------
<?php
function car_brands() {
return array("chevy", "hummer");
}
print car_brands()[1] . "\n";
?>
Expected result:
----------------
"hummer"
Actual result:
--------------
Parse error: syntax error, unexpected '[' in test.php on line 5
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=50003&edit=1