- var_dump: documentation ( source)
- json_encode: documentation ( source)
<?php
// Issue 1, empty associative arrays (dictionaries) become regular arrays.
$dictionary = array('key' => 'value');
var_dump(json_encode($dictionary)); // gives '{"key":"value"}';
unset($dictionary['key']);
var_dump(json_encode($dictionary)); // Gives '[]' -> json dictionary turned into array
var_dump(json_encode((Object)$dictionary)); // Gives '{}' -> json dictionary stays dictionary
// Issue 2, array manipulations that involve the array indexes, turn numeric arrays into dictionaries.
$fruits = array("apples", "oranges");
var_dump(json_encode($fruits)); // Gives ["apples", "oranges"]
unset($fruits[0]); // Don't like apples.
var_dump(json_encode($fruits)); // Gives '{"1":"oranges"}' -> wow, array turned into dictionary.