后端人员写接口时候,经常会对数组进行条件过滤,当数组被unset数据后,用json_encode格式化时会带有下标
$scoreData=[
['uid'=>'1001','name'=>'张三','score'=>'80'],
['uid'=>'1002','name'=>'李四','score'=>'59'],
['uid'=>'1003','name'=>'王五','score'=>'74'],
['uid'=>'1004','name'=>'李六','score'=>'93'],
];
foreach($scoreData as $k=>$v) {
if ($v['score'] < 60) {
unset($scoreData[$k]);
}
}
echo json_encode($scoreData);
返回值如下
{
"0": {
"uid": "1001",
"name": "张三",
"score": "80"
},
"2": {
"uid": "1003",
"name": "王五",
"score": "74"
},
"3": {
"uid": "1004",
"name": "李六",
"score": "93"
}
}
显然上面的返回值不符合我们的预期结果,我们需要无下标的json数据,上述代码只需稍微改动一下,用PHP自带array_values就能达到目的
echo json_encode(array_values($scoreData));
返回值如下
[{
"uid": "1001",
"name": "张三",
"score": "80"
}, {
"uid": "1003",
"name": "王五",
"score": "74"
}, {
"uid": "1004",
"name": "李六",
"score": "93"
}]