Re: [RFC] Additional splat operator usage
| From: | Rowan Collins | Date: | Fri, 07 Nov 2014 17:19:24 +0000 |
| Subject: | Re: [RFC] Additional splat operator usage | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-78846@lists.php.net to get a copy of this message | ||
On 04/11/2014 20:55, Andrea Faulds wrote:
Interestingly, the current behaviour of PHP is to issue an error in this situtation ("Catchable fatal error: Cannot unpack array with string keys"), while HHVM simply strips off the keys and unpacks the values: http://3v4l.org/vi7fn However, if you present multiple arrays with integer keys, HHVM issues an error ("Fatal error: Only the last parameter in a function call is allowed to use ..."), while PHP happily merges them, appending and renumbering the keys as though array_merge() had been used: http://3v4l.org/fXE8UIf anything, I think I would expect the keys of splatted arrays to be discarded, since it seems most natural to use this in a list context, but I can imagine always having to check in the manual.I don’t think they’d be discarded. The named parameters RFC proposes that named keys be kept by ..., and I’d prefer we do that since it makes more sense anyway:
[‘foo’=>’bar] and [...[’foo’=>’bar’]] should act the same, no?By that logic, [42 => true] and [...[42 => true]] should also act the same, but if we make it a short-hand for array_merge(), then numeric keys will be discarded. In fact, I think that's what concerns me about this proposal - it's *not* obvious how it should behave, and different use cases lend themselves to different answers. -- Rowan Collins [IMSoP]