gpt4 book ai didi

php - array_filter 将索引数组转换为关联数组

转载 作者:可可西里 更新时间:2023-10-31 22:10:36 26 4
gpt4 key购买 nike

我有一个包含一些关联数组的索引数组,我应用了一个简单的

$my_arr = array_filter($my_arr, function($obj) {
return $obj["value"] < 100;
});

过滤数组中的某些项目的函数。

这开始让我的 Angular 前端出现奇怪的错误,所以几分钟后我发现 $my_arr 正在从索引数组转换为关联数组。

  • 这是 array_filter 中的预期行为吗?
  • 如何告诉 array_filter 我需要一个索引数组?

编辑:按照评论中的要求,我的$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}]}

最佳答案

数组没有从一种类型转换为另一种类型——它们在 PHP 中是一样的。只是 array_filter() 在过滤时保留键/值关联。无法自动重新索引数组 according to the documentation ,所以你必须手动完成:

$my_arr = array_values(array_filter($my_arr, function($obj) {
return $obj["value"] < 100;
}));

关于php - array_filter 将索引数组转换为关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31625822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com