PHP json_encode 空对象和空数组处理

  作者:王九蛋

此前在给客户端或者前端等提供接口的时候曾遇到php空数组转换json字符串为'[]'导致数据结构不一致解析出错的问题,这个问题PHP官方文档给出解决方案,使用JSON_FORCE_OBJECT,但一旦遇到多维索引数组的情况此时会将索引数组无形中转换成关联数组,eg:$arr=["非空"=>['我快乐','我不快乐','我快不快乐'],"空"=>[]];$json

此前在给客户端或者前端等提供接口的时候曾遇到php空数组转换json字符串为'[]'导致数据结构不一致解析出错的问题,这个问题PHP官方文档给出解决方案,使用JSON_FORCE_OBJECT,但一旦遇到多维索引数组的情况此时会将索引数组无形中转换成关联数组,eg:

$arr = [

    "非空"=>[
        '我快乐', '我不快乐', '我快不快乐'
    ],
    "空"=>[]
];

$json_obj = json_encode($arr,JSON_FORCE_OBJECT);
print_r($json_obj);

{
    "非空": {
        "0": "我快乐",#此时会将索引数组无形中转换成关联数组
        "1": "我不快乐",
        "2": "我快不快乐"
    },
    "空": {}
}


所以使用的时候还是需要注意,这个问题最好的解决方式便是通过强制类型转换去处理。

$arr = [

    "非空"=>[
        '我快乐', '我不快乐', '我快不快乐'
    ],
    "空"=>[]
];

$arr = (object)$arr;

$json_obj = json_encode($arr);
print_r($json_obj);

{
    "非空": ["我快乐", "我不快乐", "我快不快乐"],
    "空": []
}


https://blog.csdn.net/qq_21119513/article/details/80577436

有用  |  无用

猜你喜欢