Php json_在数组_过滤器之后使用不同的结果进行编码

Php json_在数组_过滤器之后使用不同的结果进行编码,php,json,array-filter,Php,Json,Array Filter,我希望json_encode返回如下内容 [{key: "value"},{key:"value"},...] 相反,我得到了这样的结果: {"1": {key: "value"}, "2": {key: "value"}, ...} 结果很好,直到我做了一个array\u过滤器。。。奇怪 function somefunction($id, $ignore = array()) { $ignorefunc = function($obj) use ($ignore) {

我希望json_encode返回如下内容

[{key: "value"},{key:"value"},...]
相反,我得到了这样的结果:

{"1": {key: "value"}, "2": {key: "value"}, ...}
结果很好,直到我做了一个
array\u过滤器
。。。奇怪

function somefunction($id, $ignore = array()) {
    $ignorefunc = function($obj) use ($ignore) {
        return !in_array($obj['key'], $ignore);
    };

    global $db;

    $q = "Some query";

    $rows = $db->giveMeSomeRows();
    $result = array();
    if ($rows) {
        // this mapping I've always done
        $result = array_map(array('SomeClass', 'SomeMappingFunction'), $rows);
        if (is_array($ignore) && count($ignore) > 0) {
            /////// PROBLEM AFTER THIS LINE ////////
            $result = array_filter($result, $ignorefunc);
        }
    }
    return $result;
}
同样,如果我注释掉
array\u filter
,我会从
json\u encode
返回的任何函数中得到我想要的,如果不是,我会得到一个json对象


如果我
var\u dump
$result
array\u filter
之前和之后,它是同一类型的PHP数组,键中没有字符串等等。

您想要一个
数组
,但是您得到的是
json
对象,因为您的数组不是从
0开始的
尝试使用
数组\u值
重置数组

范例

$arr = array(1=>"a",2=>"Fish");
print(json_encode($arr));
print(json_encode(array_values($arr)));
输出

{"1":"a","2":"Fish"}
["a","Fish"]
替换

 $result = array_filter($result, $ignorefunc);


谢谢@Baba的回答,我遇到了一个类似的问题,这就解决了!
  $result = array_filter($result, $ignorefunc);
  $result = array_values($result);