array_filter在我的数组中添加了额外的索引,如何摆脱它?

时间:2018-04-03 09:26:23

标签: php

我有一个从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"}   ]

我怎么能实现这个目标?

3 个答案:

答案 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;