在多级数组中,JSON_FORCE_OBJECT会将所有嵌套数值数组编码为对象。
如果你只关注第一级数组(例如,使其适合作为MySQL JSON列),那么可以将第一级数组强制转换为对象,例如:
<?PHP $ json = json_encode((object)$ array,JSON_PRESERVE_ZERO_FRACTION + JSON_UNESCAPED_UNICODE); ?>
JSON_PRESERVE_ZERO_FRACTION 确保浮点值始终编码为浮点值。自PHP 5.6.6起可用。
以下是JSON_FORCE_OBJECT 数字索引数组 强转对象使用案例
$abc = array('a','b','c','d','e','f','g'); echo '<pre>'; var_dump($abc); echo json_encode($abc);
输出结果:[当数组下标为数字索引,,,,,,且为连续的]
$abc = array('a',2=>'b',3=>'c',4=>'d',5=>'e',6=>'f',7=>'g'); echo '<pre>'; var_dump($abc); echo json_encode($abc);
输出结果:{当数组下标为数字索引,,,,,,且下标中间有断开的} 被解析为对象
$abc = array('a','b','c','d','e','f','g'); echo '<pre>'; var_dump($abc); echo json_encode($abc,JSON_FORCE_OBJECT);
输出结果:{ 使用 JSON_FORCE_OBJECT 强制转换为对象 }
总结: 除了连续不断的索引数组 其他都被解析为object