防止json_encode()自动生成整数键

I'm trying to encode a two-dimensional PHP array to JSON with json_encode() and I'm having a problem:

My array looks like this:

$array = array( array( 1325368800, 6898 ) );

When I encode it to JSON using json_encode(), the output looks like this:

  'data' : [ 
          '0' : [  '0' : '1325368800',      '1' : '6898' ]
           ]

I would like to get rid of the automatically generated integer keys and have it like this:

'data':  [ [ '1325368800', '6898' ] ]

Any tips?

This can only happen if you give the JSON_FORCE_OBJECT flag to json_encode (live demo):

echo json_encode(array(array( 123, 123 )));
// outputs [[123,123]]

echo json_encode(array(array( 123, 123 )), JSON_FORCE_OBJECT);
// outputs {"0":{"0":123,"1":123}}

Make sure the second argument of json_encode is not set, or set to a value generated by ORing JSON_* constants together.

If, however, the data is an associative array, you can use array_values to get a JSON array instead of a JSON object:

$assocData = array('0' => array('0' => 123, '1'=>123));
$arrayData = array_map('array_values', array_values($assocData));
echo json_encode($arrayData);

By the way, the JSON output you cited is invalid, since it uses square brackets ([]) for objects, and misses a quote after "0.