我有一个数组,看起来像这样:array_filter返回意想不到的结果
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
。
有人可以帮我找到一个解决方案,如果你真的很好,请解释一下为什么会发生这种情况,以及如何解决它 - 所以我会知道下一次!
这是因为作为['array_filter'文档(http://php.net/manual/en/function.array-filter.php )说,数组键被保存。由于Pepperoni在原始矩阵中具有关键字2,因此它将该关键字保留在返回的矩阵中。 –