【发布时间】:2015-07-25 11:08:02
【问题描述】:
我有一个包含几个关联数组的索引数组,我应用了一个简单的
$my_arr = array_filter($my_arr, function($obj) {
return $obj["value"] < 100;
});
用于过滤数组中某些项目的函数。
这开始以奇怪的方式使我的 Angular 前端出现错误,所以几分钟后我发现 $my_arr 正在从索引数组转换为关联数组。
- 这是
array_filter中的预期行为吗? - 如何告诉
array_filter我想要一个索引数组?
编辑:根据 cmets 的要求,我的$my_arr:
$my_arr = [
["foo" => "bar", "value" => 10],
["foo" => "var", "value" => 30],
["foo" => "car", "value" => 440],
["foo" => "dar", "value" => 700]
]
编辑:从我的代码中提取的真实世界:
$media = [
"photos" => [
["foo" => "bar", "value" => 10],
["foo" => "var", "value" => 20],
["foo" => "car", "value" => 50],
]
];
echo json_encode($media);
echo "\n\n";
$media["photos"] = array_filter($media["photos"], function($photo) {
return $photo["value"] > 15;
});
echo json_encode($media);
输出:
{"photos":[{"foo":"bar","value":10},{"foo":"var","value":20},{"foo":"car","value":50}]}
{"photos":{"1":{"foo":"var","value":20},"2":{"foo":"car","value":50}}}
预期输出:
{"photos":[{"foo":"bar","value":10},{"foo":"var","value":20},{"foo":"car","value":50}]}
{"photos":[{"foo":"var","value":20},{"foo":"car","value":50}]}
【问题讨论】:
-
请向我们展示您的数组结构。
-
@Rizier123 完成,检查编辑。
-
现在它是如何转换为关联数组的?同时显示您当前的输出 + 预期输出
-
@Rizier123 好的,检查我的第二次编辑。
-
在您的
array_filter()周围拨打array_values()电话,一切顺利。
标签: php arrays projection higher-order-functions