我有一个如下所示的数组:
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
)
)
当我这样做时:
function getPizza () {
$id = 3;
return array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
});
}
我明白了:
[2] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
我确信这是正确的,但我真的很喜欢这个:
[0] => Array
(
[pizza] => Pepperoni
[votes] => 9
[id] => 3
)
请注意0
而不是2
。
有人可以帮我找到解决方案,如果你真的很好,请解释一下为什么会发生这种情况,以及如何解决这个问题 - 所以下次我会知道!
答案 0 :(得分:3)
array_filter
保留数组键。如果您不想要它们,array_values
只会为您提供“包装在新数组中”的值:
return array_values(array_filter($pizzen, function ($arr) use ($id) {
return $arr['id'] == $id;
}));
答案 1 :(得分:0)
array_filter()的文档具体说:
保留数组键。
如果要重置密钥,请使用类似array_merge()的内容
function getPizza () {
$id = 3;
return array_merge(array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
}));
}
答案 2 :(得分:0)
function getPizza () {
$id = 3;
return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id));
}));
}
array_values
重新索引数组。
答案 3 :(得分:0)
您可以使用array_values()
重新创建索引:
return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
return ($arr['id'] == $id);
}));