Yes it does :) I guess my point was it would be confusing if PHP supported JSON-like syntax, but json_decode(X) was different from eval(X). So if PHP isn't going to use JSON syntax (because it doesn't work for assoc arrays), then I don't think there is much benefit in using *almost* JSON syntax.
It just seems simpler that: array(1, 2) equals [1, 2] array(1 => 2) equals [1 => 2] -Dan On Tue, May 31, 2011 at 2:42 PM, Rasmus <ras...@lerdorf.com> wrote: > On 05/31/2011 02:34 PM, Dan Birken wrote: > > It is worth noting that point you bring up is one that is present in PHP > > currently: > > > > php > print_r(json_decode(json_encode(array('a' => 'b')))); > > stdClass Object > > ( > > [a] => b > > ) > > > > php > print_r(json_decode(json_encode(array('a', 'b')))); > > Array > > ( > > [0] => a > > [1] => b > > ) > > Sure, but that makes makes perfect sense, does it not? Javascript does > not have associative arrays. So any non-scalar array has to be mapped to > a Javascript object in order to be represented. When we bring it back we > map a Javascript object to a PHP object, however, there is an optional > argument on json_decode() to change that to an associative array if > desired. > > The point we are making is that this exact inability of the json > notation to distinguish an associative array from an object makes it a > problematic choice for a native syntax in PHP. > > -Rasmus >