php使json对象无法按预期工作

时间:2016-04-05 00:37:37

标签: php json

这是我的代码:

$amenitiesObject = array('parameter-amenities' => array('value' =>  $amenities));
$buildingObject = array('parameter-building' => array('value' =>  $building));

$data = array($amenitiesObject, $buildingObject);
$post_data = json_encode($data, JSON_FORCE_OBJECT);
return $post_data;

结果是:

{"0":{"parameter-amenities":{"value":""}},"1":{"parameter-building":{"value":""}}}

虽然我希望这样:

{"parameter-amenities":{"value":""},"parameter-building":{"value":""}}

请问我的错误是什么?

1 个答案:

答案 0 :(得分:1)

虽然@ fusion3k的评论是正确的并且正在$data = array_merge( $amenitiesObject, $buildingObject );修复它,但我想进一步解释它,以便您可以避免这种情况。

执行$data = array($amenitiesObject, $buildingObject);时,您没有创建两个数组的合并,而是创建索引0等于$amenitiesObject且索引1等于$buildingObject的数组,等效做:

array(0 => $amenitiesObject, 1 => $buildingObject);

所以json_encode部分按预期工作。

当你使用array_merge时,你只维护一个数组,这是两个数组的组合,所以你有预期的结果。