You need to wrap things in another array
:
$data = array("item" => array(array("id" => "123456", "name" => "adam")));
This will be more understandable if we use the equivalent PHP 5.4 array syntax:
$data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ];
Compare this with the JSON:
{ "item": [ {"id":"123456", "name":"adam" } ] }
The only thing to explain is why one of the PHP arrays remains an array []
in JSON while the other two get converted to an object {}
. But the documentation already does so:
When encoding an array, if the keys are not a continuous numeric
sequence starting from 0, all keys are encoded as strings, and
specified explicitly for each key-value pair.