Php json_在数组_过滤器之后使用不同的结果进行编码
我希望json_encode返回如下内容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) {
[{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);