There's an odd departure towards the end where the author talks about JSON-to-array conversions and vice versa. Unsurprisingly, this can't always work, not only because of the keying issue that the author mentions, but also because PHP supports objects, references, anonymous functions, and other things that JSON simply can't support.
Weirder than that. They're ordered hash tables. The order of keys in a PHP array isn't arbitrary, like dictionaries/hashes/maps in various other languages; it's based on the order that keys are added, and can be explicitly manipulated with functions like ksort().
Yep. In Next Generation Shell for example. At the time that the language was created, around 2013, it was clear to me (author of the language) that ordered traversal is beneficial and outweighs the downsides (memory usage).
PHP developers differentiate between arrays and associative arrays. Although you can mix int and string keys, I've never seen anyone do so in actual code.
Though we cannot force PHP to interpret keys as strings if they also represent valid integers. I just had a case of an (associative) array of numeric codes — those which start with a '0' are treated as string keys, all others being treated as numeric. This doesn't matter so much at runtime, but I had to suppress some type checker (Psalm) errors.
14 comments
[ 4.1 ms ] story [ 40.0 ms ] threadThere's an odd departure towards the end where the author talks about JSON-to-array conversions and vice versa. Unsurprisingly, this can't always work, not only because of the keying issue that the author mentions, but also because PHP supports objects, references, anonymous functions, and other things that JSON simply can't support.
Weirder than that. They're ordered hash tables. The order of keys in a PHP array isn't arbitrary, like dictionaries/hashes/maps in various other languages; it's based on the order that keys are added, and can be explicitly manipulated with functions like ksort().
[1] https://docs.python.org/3.6/whatsnew/3.6.html#new-dict-imple...