Re: Proposal: Array syntax
| From: | Kouber Saparev | Date: | Wed, 05 Nov 2003 09:48:10 +0000 |
| Subject: | Re: Proposal: Array syntax | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-5198@lists.php.net to get a copy of this message | ||
Your idea is even cooler...;)
I would like to have these in PHP.
Kouber
"Michael Walter" <cm@leetspeak.org> wrote in message
news:3FA8BC03.9050104@leetspeak.org...
> Very cool.
>
> How about supporting .. syntax, btw. as in [1..3] or ["a".."z"]? Might
> no be the worth, just thinking out loud ;)
>
> Christian Schneider wrote:
> > I propose to add an alternative (backward compatible) short array
> > creation syntax:
> > $a = [ 1, 2, 3 ]; and $a = [ 'a' => 42, 'b' => "foo"
> > ];
> >
> > It can also be used in function calls:
> > img(['src' => "logo.gif", 'alt' => "Logo"]);
> >
> > Reason behind this change: Arrays are used a lot and should therefore
> > have as little syntactic overhead as possible. And I think the short
> > syntax is also easier to read and write.
> >
> > A patch for the parser is trivial and is attached for Zend2.
> >
> > Note: I checked the newsgroup archive but couldn't find a discussion
> > about this. After not hearing back about my proposed enhancement to
> > debug_backtrace() and the dangling comma for function call parameters
> > being rejected I wonder if I'm using the right mailing list for this :-)
> >
> > - Chris
> >
> >
> > ------------------------------------------------------------------------
> >
> > Index: Zend/zend_language_parser.y
> > ===================================================================
> > RCS file: /repository/ZendEngine2/zend_language_parser.y,v
> > retrieving revision 1.127
> > diff -u -r1.127 zend_language_parser.y
> > --- Zend/zend_language_parser.y 19 Oct 2003 08:38:48 -0000 1.127
> > +++ Zend/zend_language_parser.y 4 Nov 2003 23:32:12 -0000
> > @@ -581,6 +581,7 @@
> > | '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr
zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; }
> > | scalar { $$ = $1; }
> > | T_ARRAY '(' array_pair_list ')' { $$ = $3; }
> > + | '[' array_pair_list ']' { $$ = $2; }
> > | '
' encaps_list '' {
> > zend_do_shell_exec(&$$, &$2 TSRMLS_CC); }
> > | T_PRINT expr { zend_do_print(&$$, &$2 TSRMLS_CC); }
> > ;
> >
> >