Php 返回意外结果的数组\u筛选器
我有一个如下所示的数组:Php 返回意外结果的数组\u筛选器,php,arrays,array-filter,Php,Arrays,Array Filter,我有一个如下所示的数组: Array ( [0] => Array ( [pizza] => Calzone [votes] => 1 [id] => 1 ) [1] => Array ( [pizza] => Margherita [votes] => 5 [id] => 2 ) [2] => Array
Array
(
[0] => Array
(
[pizza] => Calzone
[votes] => 1
[id] => 1
)
[1] => Array
(
[pizza] => Margherita
[votes] => 5
[id] => 2
)
[2] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
[3] => Array
(
[pizza] => Quattro Formaggi
[votes] => 3
[id] => 4
)
[4] => Array
(
[pizza] => Sloppy Giuseppe
[votes] => 7
[id] => 5
)
)
[0] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
当我这样做的时候:
function getPizza () {
$id = 3;
return array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
});
}
我明白了:
[2] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
我相信这是正确的,但我真的希望:
Array
(
[0] => Array
(
[pizza] => Calzone
[votes] => 1
[id] => 1
)
[1] => Array
(
[pizza] => Margherita
[votes] => 5
[id] => 2
)
[2] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
[3] => Array
(
[pizza] => Quattro Formaggi
[votes] => 3
[id] => 4
)
[4] => Array
(
[pizza] => Sloppy Giuseppe
[votes] => 7
[id] => 5
)
)
[0] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
注意0
而不是2
有人能帮我找到一个解决方案吗?如果你真的很好,请解释一下为什么会发生这种情况,以及如何解决它——这样我下次就知道了 array_filter()的文档特别指出: 保留数组键 如果要重置键,也可以使用类似于array_merge()的方法
array_filter()的文档特别说明: 保留数组键 如果要重置键,也可以使用类似于array_merge()的方法
array\u filter
保留数组键。如果不需要它们,array\u values
只提供“包装在新数组中”的值:
array\u filter
保留数组键。如果不需要它们,array\u values
只提供“包装在新数组中”的值:
重新索引数组
重新为数组编制索引。您可以使用
array\u values()
重新创建索引:
return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
}));
您可以使用
array\u values()
重新创建索引:
return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
}));
发生这种情况的原因是,正如前面所说,数组键被保留。由于Pepperoni在原始矩阵中有键2,所以它会将该键保留在返回的矩阵中。这是因为正如所说的,数组键被保留。由于Pepperoni在原始矩阵中有密钥2,因此它将该密钥保留在返回的矩阵中。