这是我的代码:
$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":""}}
请问我的错误是什么?
答案 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时,你只维护一个数组,这是两个数组的组合,所以你有预期的结果。