json_encode/json_decode - returns stdClass instead of Array in PHP

Observe this little script:

$array = array('stuff' => 'things');
print_r($array);
//prints - Array ( [stuff] => things )
$arrayEncoded = json_encode($array);
echo $arrayEncoded . "<br />";
//prints - {"stuff":"things"}
$arrayDecoded = json_decode($arrayEncoded);
print_r($arrayDecoded);
//prints - stdClass Object ( [stuff] => things )

Why does PHP turn the JSON Object into a class?

Shouldn't an array that is json_encoded then json_decoded yield the EXACT same result?


Take a closer look at the second parameter of json_decode($json, $assoc, $depth) at https://secure.php.net/json_decode


$arrayDecoded = json_decode($arrayEncoded, true);

gives you an array.