我有一个从json
创建的数组$fullResult = json_decode('[{"qid":"1", "result":"helo"}, {"qid":"2", "result":"ad"}, {"qid":"3", "result":"testing"}, {"qid":"4", "result":"dd"}]');
function filterArray($value){
global $id;
return ($value->qid > $id);
}
$filteredResult = array_filter($fullResult, 'filterArray');
$id
是2
当我echo json_encode($fullResult);
时
结果是
[ {"qid": "1", "result": "helo"},
{"qid": "2", "result": "ad"},
{"qid": "3", "result": "testing"},
{"qid": "4", "result": "dd"} ]
然而,当我echo json_encode($filteredResult);
结果如下(例如,有附加索引。
{ "2":{"qid":"3","result":"testing"},
"3":{"qid":"4","result":"dd"} }
我希望它如下所示
[ {"qid":"3","result":"testing"},
{"qid":"4","result":"dd"} ]
我怎么能实现这个目标?
答案 0 :(得分:1)
array_filter
将保留密钥。如果要将其设为简单数组,可以使用array_values
$filteredResult = array_values(array_filter($fullResult, 'filterArray'));
echo json_encode($filteredResult);
这将导致:
[{"qid":"3","result":"testing"},{"qid":"4","result":"dd"}]
Doc:array_values
答案 1 :(得分:1)
而不是
echo json_encode($filteredResult);
尝试类似的事情,
echo json_encode(array_values($filteredResult));
array_values
将消除不需要的索引。
答案 2 :(得分:0)
您也可以通过循环设置它。
$singleArray = array();
foreach ($filteredResult as $key => $value){
$singleArray[] = $value;
}
echo json_encode($singleArray);exit;