我遇到了array_filter的一些奇怪的错误。PHP array_filter输出有时索引号
我的JSON数据是这样的:
{
"data": [
{
"item": "book",
"date": "9.10."
},
{
"item": "apple",
"date": "10.10."
},
{
"item": "pen",
"date": "11.10."
}
]
}
我可以删除某些对象与此代码:
$days_arr = array('9.10.','10.10.');
$result['data'] = array_filter($my_var['data'], function($v) use ($days_arr)
{
return in_array($v['date'], $days_arr);
});
return json_encode($result);
从而消除包含日期= 9.10的对象。和10.10。 但问题:当我使用$days_arr = array('9.10.','11.10.');
我的输出是这样的:
{
"data": {
"0": {
"item": "book",
"date": "9.10."
},
"1": {
"item": "pen",
"date": "11.10"
}
}
}
因此,大家可以看到,一些非常奇怪的错误发生,JSON是完全错误的格式化。 9.10。和10.10。作品,10.10。和11.10。破坏输出。
谁能帮忙?
我怀疑它实际上与你给出的例子发生:https://eval.in/877329,如果你结束了指数0,2剩余的(注意差距虽这么说),那么等价的JSON结构将是一个对象而不是一个数组 – apokryfos